python基础学习-异常
"""
异常:
捕获异常:
基本语法:
try:
可能发生错误的代码
except:
出现异常执行代码
else:
没异常,执行
finally:
无论有无异常,都执行
异常具有传递性
"""
# 捕获指定异常
try:
print(name)
except NameError as e:
print("出现未定义异常")
print(e)
# 捕获多个异常
try:
print(name)
1/0
except (NameError, ZeroDivisionError) as e:
print("出现未定义异常 或 除0异常")
print(e)
# 捕获所有异常
try:
print(name)
1/0
except Exception as e:
print("出现未定义异常 或 除0异常")
print(e)
可以使用raise关键字来引发异常(抛出异常对象),而调用者可以通过try...except...结构来捕获并处理异常。
例如在函数中,当函数的执行条件不满足时,可以使用抛出异常的方式来告知调用者问题的所在,而调用者可以通过捕获处理异常来使得代码从异常中恢复,定义异常和抛出异常的代码如下所示。
class InputError(ValueError):
"""自定义异常类型"""
pass
def fac(num):
"""求阶乘"""
if num < 0:
raise InputError('只能计算非负整数的阶乘')
if num in (0, 1):
return 1
return num * fac(num - 1)
调用求阶乘的函数fac,通过try...except...结构捕获输入错误的异常并打印异常对象(显示异常信息),如果输入正确就计算阶乘并结束程序。
flag = True
while flag:
num = int(input('n = '))
try:
print(f'{num}! = {fac(num)}')
flag = False
except InputError as err:
print(err)

浙公网安备 33010602011771号