何为异常:
python程序运行的过程中不可避免的会出错,当Python脚本发生异常时我们需要捕获处理它,否则程序会终止执行。
捕获异常:
捕捉异常可以使用try/except语句。
try/except语句用来检测try语句块中的错误,从而让except语句捕获异常信息并处理。
如果你不想在异常发生时结束你的程序,只需在try里捕获它。
语法:
以下为简单的try….except…else
的语法:
try:
pass
except:
pass
except:
pass
else:
#如果没有异常发生
try:
print(a)
except NameError as e:
print(e)
#name a is not defined
我们打印输出了一个未定义的变量a
,except捕获到异常
我们在except
来捕获多种异常:
except(Exception1 [,exception2 [,...Exception3]])
我们可以使用raise
语句自己触发异常
raise
语法格式如下:
raise [Exception [, args [, traceback]]]
示例:
a =1
try:
if a < 2:
raise Exception('error')
except Exception as e:
print(e)
#error
我们在if
语句中触发了一个Exception
,在except
中我们捕获到了这个异常
我们可以自定义一个异常函数,满足条件时触发:
def checkLeve(lev):
if lev < 1:
raise Exception('level error')
#触发异常后,后续代码不再执行
try:
checkLeve(0)
except Exception as e:
print(e)
else:
print('ok')
# level error
自定义异常类,当满足条件时,捕获:
通过创建一个新的异常类,程序可以命名它们自己的异常。异常应该是典型的继承自Exception
类,通过直接或间接的方式。
以下为与RuntimeError
相关的实例,实例中创建了一个类,基类为RuntimeError
,用于在异常触发时输出更多的信息。
在try语句块中,用户自定义的异常后执行except块语句,变量e
是用于创建Networkerror
类的实例。
class Networkerror(RuntimeError):
def __init__(self,*args):
self.args = args
try:
raise Networkerror('bad hostname')
except Networkerror as e:
print(e.args)
#('bad hostname',)