异常与异常处理:
异常就是错误,异常会导致程序崩溃并停止运行
try:
<代码块1>被try关键字检查并保护的业务代码
except<异常的类型>:
<代码块2>代码块1出错后执行的代码块
捕获通用异常:
无法确定是哪种异常的情况下使用的捕获方法
try:
<代码块>
except Exception as e:
<异常代码块>
捕获具体异常:
确定是哪种异常的情况下使用的捕获方法
except<具体的异常类型> as e:
try:
1/0
except ZeroDivisionError as e:
print(e)
-->division by zero
捕获多个异常:
try:
except<>:
except<>:
可以写多个except
只会生效遇到的第一个except
try:
except(<>,<>) as e:
可以把异常类型用元组包裹起来,捕获到哪个抛哪个
异常类型:
finally:
无论是否发生异常,一定会执行的代码块
在函数中,即便在try或except中进行了return也依然会执行finally语法块
try语法至少要伴随except或finally中的一个
try:
<代码块1>
except:
<代码块2>
finally:
<代码块3>
finally的return优先级最高
若没有except,当try中有错时,不会报错,会返回finally的返回值
自定义异常与抛出异常:
自定义抛出异常函数raise:
将信息以报错的形式抛出
raise 异常类型(message)
message为错误信息,无返回值
这种报错可以被try except捕获
自定义异常类:
继承基类----Exception
在构造函数中定义错误信息
class 自定义错误名(Exception):
def __init__(self, message):
self.message = message