众所周知,在python中我们用try…except…来捕获异常,使用raise来抛出异常,但是多重的try…except…是如何使用的呢
前提
抛出异常
- 当调用
raise 进行抛出错误的时候,抛出错误的后面的代码不执行
def func():
print("hello")
raise Exception("出现了错误")
print("world")
func()
打印的错误堆栈
- 如果抓取错误,就相当于
if...else ,并不会打断代码的执行
def func():
try:
print("hello")
raise Exception("出现了错误")
except Exception as why:
print(why)
print("world")
func()
自定义异常
自定义异常需要我们继承异常的类,包括一些框架中的异常的类,我们自定义异常的话都需要继承他们
class MyError(Exception):
pass
def say_hello(str):
if str != "hello":
raise MyError("传入的字符串不是hello")
print("hello")
say_hello("world")
异常对象
Exception 是多有异常的父类,他会捕获所有的异常- 其后面会跟一个
as as后面的变量就是异常对象,异常对象是异常类实例化后得到的
多重try
- 如果是嵌套的
try...except... 的话,这一层raise 的错误,会被上一层的try...except... 进行捕获
|