try:
pass
except Exception as e:
raise e
try:
pass
except Exception as e:
raise e
else:
pass
try:
pass
except Exception as e:
raise e
finally:
pass
try:
pass
except Exception as e:
raise
else:
pass
finally:
pass
捕获所有异常的两种方式
- except
- except Exception (推荐,可以起别名)
抛出异常
raise异常对象
在处理异常中抛出异常
在except的代码段中
* raise
* raise 异常对象别名
自定义异常
直接或间接从Exception派生
以标准异常相似,大部分异常的命名都是以Error结尾
描述信息:类中str中定义描述信息,对象调用这里
class MyError(Exception):
def init(self):
super().__init__()
def str(self):
return "xiaoxiao"
def main():
try:
a = 0
if a == 0: # 触发条件
# 抛出实例对象,这里init没有参数,其实可以有参数的
raise MyError()
except MyError as e: # 捕获
print("aaa")
print(e) # 打印异常描述信息,str内的信息
main()
if __name__ == '__main__':
main()
简单try执行过程
首先,执行try子句(在try和except关键字之间的部分)
如果没有异常发生,except子句在try语句执行完毕后就被忽略了
如果在try子句执行过程中发生了异常,那么该子句其余的部分就会被忽略
如果异常匹配于except关键字后面指定的异常类型,就执行对应的except子句。然后继续执行try语句之后的代码。如果发生了一个异常,在except子句中没有与之匹配的分支,它就会传递到上一级try语句中。
如果最终仍找不到对应的处理语句,它就成为一个未处理异常,终止程序运行,显示提示信息。
一个try语句可能包含多个except子句,分别指定处理不同的异常。至多只会有一个分支被执行。异常处理程序只会处理对应的try子句中发生的异常,在同一个try语句中,其他子句中发生的异常则不作处理。一个except子句可以在括号中列出多个异常的名字。