1.处理异常
try:
statements to be inside try clause
statement2
statement3
…
except:ExceptionName:
statements to evaluated in case of ExceptionName happens
工作顺序:
1、首先执行try子句,若try子句执行正常,则except直接被忽略,不执行
2、若在执行try子句过程中,出现异常:
2.1 异常在 except 分支中有匹配的异常类型,则执行对应的except 子句,然后继续执行try子句之后的代码
2.2 异常在except 分支中无匹配的 异常类型,它就会传递到上一级 try 语句中。如果最终仍找不到对应的处理语句,它就成为一个 未处理异常,终止程序运行,显示提示信息。
3、一个空except语句,可以捕获任何异常
2.抛出异常
raise语句抛出一个异常
try:
raise ValueError("A value error happend.")
except ValueError:
print("ValueError in the code")
3.finally子句定义清理行为
不管是否有发生异常,finally子句,在程序离开try后,都一定会被执行。
当try子句中发生了异常,不管是否被except是否捕获,在finally子句执行完后它都会被重新抛出
# 异常已被except捕获
>>> try:
... raise KeyboardInterrupt
... except KeyboardInterrupt:
... print("Error")
... finally:
... print("Bye,World")
...
Error
Bye,World
>>>
# 异常未被except捕获
>>> try:
... raise KeyboardInterrupt
... except ValueError:
... print("Enter value error!")
... finally:
... print("Goodbye!")
...
Goodbye!
Traceback (most recent call last):
File "<stdin>", line 2, in <module>
KeyboardInterrupt