python中处理异常

异常处理

语法错误

语法错误又称解析错误,可能是你在学习Python 时最容易遇到的错误:

image.png

 

异常

程序语法没有问题,只有在运行的时候出现问题,称为程序异常。

def add(x,y):
    return x+y

z = add("hello",2)  # 字符串和数字不能直接使用 + 拼接,所以说执行的时候会报异常。

image.png

 

with open('/hellowolrd',mode='r',encoding='utf8') as f:
    print(f.readlines())

image.png

程序发生异常之后,会自动中断执行,不再运行下面的代码。

 

处理异常

try:
    执行代码
excpet 异常类型:
    处理代码

 

try:
    # 要执行的代码
    with open('/hellowolrd',mode='r',encoding='utf8') as f:
        print(f.readlines())
# 如果程序出现文件找到不到异常
except FileNotFoundError:
    # 处理代码
    print("对不起,文件找不到。请重新检查文件路径")

  

针对同一个程序可以添加多个异常处理。如果异常信息处理不到,可以添加 except  Exception 匹配所有异常。

Exception:所有异常的基类

try:
    # 要执行的代码
    with open('./data.png',mode='r',encoding='utf8') as f:
        print(f.readlines())
# 如果程序出现文件找到不到异常
except FileNotFoundError:
    # 处理代码
    print("对不起,文件找不到。请重新检查文件路径")
except UnicodeDecodeError:
    print("对不起,文件编码有误。请将文件编码改为UTF8编码")
except PermissionError:
    print("对不起,文件权限不足,请联系管理员")
# Excpetion 包括所有的异常
except Exception:
    print("出现未知异常信息")

注:执行的时候从上往下执行,当匹配到第一个异常时,其他的就都不执行了,当第一个匹配不到时,匹配第二个异常,当都匹配不到时,就执行最后一个

注:要在函数内部进行异常处理,不能把整个函数放到异常里,这样写是错误的

 

正确的写法如下,要在函数内部进行异常处理

def add(x,y):
    try:
        return x+y
    except TypeError:
        print('输入的数据类型有误,请检查数据类型')
    except Exception:
        print("未知异常")

add(1,"q")

  

try:
    code
except error:
    code
    ...
finally:
    code

  

Finally:无论是否有异常,该语句都会执行

def add(x,y):
    try:
        return x+y
    except TypeError:
        print('输入的数据类型有误,请检查数据类型')
    except Exception:
        print("未知异常")
    # 不管有没有异常信息,都要执行的语句。
    finally:
        print("haha... 执行结束")

add(1,"q")
add(1,1)

  

posted @ 2020-11-12 09:15  haoaixiao  阅读(109)  评论(0编辑  收藏  举报