python-异常处理
第一种写法
try:
#正常执行
except (NameError,ValueError,...) as err:
#处理逻辑
finally:
#一定会执行的语句,即使try包围的代码
第二种写法
try:
#正常执行
except NameError as err1:
#处理逻辑
except NameError as err2:
#处理逻辑
......
finally:
#一定会执行的语句,即使try包围的代码
第三种写法
try:
#正常执行
except NameError as err1:
#处理逻辑
except NameError as err2:
#处理逻辑
......
except Exception as errN: # Exception可以接受所有非系统异常,Exception是其他所有非系统异常的基类
# 处理逻辑
finally:
#一定会执行的语句,即使try包围的代码
第四种写法
try:
#正常执行
except NameError as err1:
#处理逻辑
except NameError as err2:
#处理逻辑
......
except: #可以接受所有异常,包括系统异常
# 处理逻辑
finally:
#一定会执行的语句,即使try包围的代码
抛出异常 语句:
用户自定义异常 MyInputError
class MyInputError(Exception):
"""Exception raised when there're errors in input"""
def __init__(self, value): # 自定义异常类型的初始化
self.value = value
def __str__(self): # 自定义异常类型的string表达形式
return ("{} is invalid input".format(repr(self.value)))
try:
raise MyInputError(1) # 抛出MyInputError这个异常
except MyInputError as err:
print('error: {}'.format(err))
# 当一个异常被捕获处理之后,在except语句执行到最后时,该异常就会被清除(引用该异常的变量(就是except Except as err,这里的err)不能再被使用,否则会抛出‘NameError’异常
"When an exception has been assigned using as target, it is cleared at the end of the except clause."