一 .什么是异常
异常指的是软件在运行的过程中,因为一些原因(如:使用者操作不当等)引起程序错误,导致软件奔溃的这种现象,就叫做异常
二、python处理异常
法一:
try … catch语句块来完成,使用try抓捕异常。
try:
# 将有可能触发异常的代码
except:
#处理异常的代码
example:
运行结果:
1)正常
2)不正常
法二:except后加异常的类型,as后为别名,如果知道类型就写类型,不清楚类型就用法三
运行结果:
常见的异常类型有:
>>> import builtins
>>> dir(builtins)
ValueError、KeyError、KeyboardInterrupt、ArithmeticError、FloatingPointError、IndexError、SyntaxError …
法三:不知到异常的类型时,使用BaseException 或者Exception都ok
原因:异常的继承关系如下
BaseException
|
Exception
|
常见异常(ValueError、KeyError、KeyboardInterrupt、ArithmeticError)
运行:
三、异常的处理流程
try:
# 将有可能触发异常的代码
except Xxx as e:
print("处理Xxx异常")
except Xxxx as e:
print("处理Xxxx异常")
except Exception as e:
print("使用多态将其他异常一网打尽")
# 在python中,很多块级作用域,都有这个else
else:
print("没有出现异常时执行的代码")
四.多个异常的处理方式:
法一:
try:
pass
except KeyboardInterrupt:
pass
except BlockingIOError:
pass
except EOFError:
pass
except Exception:
print("使用多态将其他异常一网打尽")
法二:(不推荐,认识就可以了)
try:
pass
except (KeyboardInterrupt, KeyError, ValueError,EnvironmentError) as e:
print("出现了异常")
五.自定义异常
1.finally关键字
finally:不管有没有异常出现,必须要执行的
注意区分else和finally,else:没有出现异常时执行的代码
一般会将必须要执行的代码,如资源的释放,链接的是关闭等等
运行:
1)出现异常
2)正常
函数中:如果在return后面存在finally,那么代码并不会直接返回,而是需要先执行finally代码,之后才会返回
2. 自定义异常
首先需要定义一个类,之后让这个类继承Exception\BaseException,当然建议使用Exception类
人为的抛出异常:
raise关键字
作用:提示错误,向上层传递错误信息