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)
posted @ 2023-06-04 11:33  ashuai~  阅读(23)  评论(0)    收藏  举报