当你的Python程序因为一个意想不到的错误(比如要打开的文件不存在)而突然“崩溃”并弹出一堆令人困惑的红色错误信息时,你是否想过,有没有一种方法能让程序“优雅地摔倒”而不是“轰然倒地”,并能清晰地告诉用户或开发者到底发生了什么?
当检测到一个错误时,解释器就无法继续执行了,反而出现了一些错误的提示,这就是所谓的"异常"。
# 运算符# print(10/0)# 文件异常f = open('python.txt', 'r')content = f.readlines()print(content)
基本语法:
try: 可能发生错误的代码except(捕获): 如果出现异常执行的代码
try...except主要用于捕获代码运行时异常
try: f = open('python.txt', 'r') content = f.readline() print(content, end='')except: f = open('python.txt', 'w', encoding='utf-8') f.write('发生异常,执行except语句中的代码')f.close()
在以上案例代码中,except相当于捕获了所有异常,无论遇到什么错误都会自动执行except中封装的代码。但是有些情况下,我们向针对性的捕获异常,并执行相应的代码。
基本语法:
try: 可能遇到异常的代码except 异常类型: 捕获到对应的错误以后,执行的代码
① 如果尝试执行的代码的异常类型和要捕获的异常类型不一致,则无法捕获异常。
② 一般try下方只放一行尝试执行的代码。
try: print(name) # print(10/0)except (NameError, ZeroDivisionError) as e: print(e)
try: print(name) # print(10/0)except (NameError, ZeroDivisionError) as e: print(e)
无论我们在except后面定义多少个异常类型,实际应用中,也可能会出现无法捕获的未知异常。这个时候,我们考虑使用Exception异常类型捕获可能遇到的所有未知异常:
try: 可能遇到的错误代码except Exception as e: print(e)
案例:打印一个未定义变量,使用Exception异常类进行捕获
try: print(name)except Exception as e: print(e)
今日学习完毕,课后作业:
设置一个程序,程序会提示用户输入一个数字,然后尝试将这个输入转换成整数。如果用户输入的内容无法转换为整数(例如输入了字母"abc"),程序会捕获这个错误,并打印一条友好的提示信息"输入错误,请输入一个有效的数字"。