异常处理的基础概念
异常处理:对有可能发生的异常的预处理方案。
代码格式:
try:
可能发生异常的代码块
except 异常类型:
异常处理的代码块
捕获指定类型的异常
下面这种写法只能捕获except
语句后面指定的异常类型:
如果发生其他类型的异常,是无法捕获的,程序依然会崩溃(和没有捕获异常一样):
捕获多种类型的异常
把要捕获的多种异常都写在except
关键字后面:
捕获所有类型的异常
直接捕获所有类型的异常:
捕获异常并打印出异常的原因
else和finally
-
else
:后面的内容只在没发生异常时执行; -
finally
:后面的内容不管有无异常都会执行(只要程序不崩溃)。
异常的传递
用户自定义的异常
异常对象必须有一个名字,且它们应是Error
或Exception
类的子类。
异常处理中抛出异常
class Test(object):
def __init__(self, switch):
self.switch = switch #开关
def calc(self, a, b):
try:
return a/b
except Exception as result:
if self.switch:
print("捕获开启,已经捕获到了异常,信息如下:")
print(result)
else:
# 重新抛出这个异常,此时就不会被这个异常处理给捕获到,从而触发默认的异常处理
raise
a = Test(True)
a.calc(11,0)
print("----------------------华丽的分割线----------------")
a.switch = False
a.calc(11,0)
运行结果: