最近更新于 2024-05-05 12:32
环境
Windows 11 22H2 专业工作站版
Python 3.11.2
情景
捕获单个指定错误类型
try:
print(x)
except NameError as err:
print(err)
这里尝试打印变量 x,但是并没有定义 x,这就是一个 NameError,可以指定捕获它
捕获多个指定错误
try:
print(1 / 0)
except (NameError, ZeroDivisionError) as err:
print(err)
这里的除数为 0,属于指定要捕获的情况之一都能被捕获到
捕获所有异常
try:
print(1 / 0)
except Exception as err:
print(err)
else: # 可选
print('无异常发生时执行')
finally: # 可选
print('不管有无异常都会执行')
自定义异常类
class CustomException(Exception):
def __init__(self, msg):
super().__init__(msg)
self.msg = msg
def __str__(self):
return f'CustomException: {self.msg}'
def __del__(self):
print('自定义异常对象销毁')
def division(x, y):
if y == 0:
raise CustomException('除数为 0')
return x / y
if __name__ == '__main__':
y = 0
try:
r = division(1, 0)
except CustomException as e:
print(e)
Python 异常处理