Python——第五章:处理异常try、except、else、finally

处理异常tryexcept

在 Python 中,tryexcept 语句用于处理异常(错误)。通过使用这两个关键字,你可以编写代码来捕获和处理可能发生的异常,以保持程序的稳定性。

try:
    try 代码
except 错误1 as 变量1:
    except1代码
except 错误2 as 变量2:
    except2代码
except 错误3 as 变量3:
    except3代码
else:
    没有异常发生时执行的代码
finally:
    始终会执行的代码
  • try 块包含可能引发异常的代码。如果发生异常,程序将跳转到 except 块,执行异常处理代码。
  • except 块可以存在多个,你可以使用多个 except 块来处理不同类型的异常:except块会进行判断,如果符合其中某个except块的错误模式,则执行某个except块下的内容
  • 为了把所有的异常都接到,通常会使用except Exception as e:来收尾(因为所有的异常,都是Exception),你可以使用变量(例如 e)来获取异常对象的信息,并可以返回输出。
  • else 块中的代码将在 try 块中的代码没有引发异常时执行。
  • finally 块中的代码始终都会执行,无论是否发生异常。
try:
    # 代码块,可能引发异常的地方
    result = 10 / 0     # 除数不能为0
    open("hehehehehehehe", mode="r").read()     # 不存在的文件
    lst = []        # 空列表不能被迭代
    lst.__iter__().__next__()

except ZeroDivisionError:
    # 处理除以零的异常
    print('除数不能为0!')

except Exception as e:
    # 异常处理块,处理发生的异常
    print(f'有异常发生: {e}')

else:
    # 没有异常发生时执行的代码
    print(f'计算结果为: {result}')

finally:
    # 始终会执行的代码
    print("执行完记得关闭数据库!!!")

抛出异常raise

raise Exception 让程序主动抛出异常,比简单的print()的提示强硬很多

def func(a, b):
    if type(a) == int and type(b) == int:
        return a + b
    else:
        # 程序会主动抛出异常,谁调用该函数,谁接收该异常
        raise Exception("你提交的不是int类型,func行数如法进行计算")     # print("a和b必须为数字")

func("呵呵", 3)
  • 谁调用该函数,谁接收该异常
  • 架构师经常会做主动抛出异常的操作,会对项目有较强的掌控力。
posted @ 2023-12-13 16:00  Magiclala  阅读(53)  评论(0编辑  收藏  举报