Python try异常处理语句的用法(非常详细,附带实例)
在编写 Python 程序时,遇到的错误通常分为语法错误和运行错误。
所谓语法错误,例如输出字符串“Hello,ShenZhen!”的代码为:
所谓运行错误,假设 a 为 8,b 为 0,输出 a 除以 b 的结果。输入代码:
按照报错信息进行改正,将 0 换为 2 后,就不会报错了,运行结果为:
下面使用 try except else 语句。定义 a 为 2,输入代码:
下面进行异常处理,将 a 的值改为整数 0,程序的运行结果为:
无论是否捕获到异常,都会执行 finally 语句。finally 语句通常用于执行一些清理操作,如关闭文件、释放资源。即使在 try 块中抛出了异常,finally 语句也会被执行。
下面举一个例子:
try except finally 语句提供了一种结构化的方式来处理异常,并在异常处理后执行一些清理操作,使我们能更好地控制程序的流程,同时确保资源的正确释放。
下面再举一个例子。输入代码:
所谓语法错误,例如输出字符串“Hello,ShenZhen!”的代码为:
print Hello,ShenZhen!运行程序,结果为:
File"demo.py", line 1 print Hello,ShenZhen! ^ SyntaxError: Missing parentheses in call to 'print'. Did you mean print(Hello,ShenZhen!)?代码有语法错误,提示缺少小括号,这种错误属于语法错误。
所谓运行错误,假设 a 为 8,b 为 0,输出 a 除以 b 的结果。输入代码:
a=8 b=0 print(a/b)运行程序,结果为:
Traceback (most recent call last): File"demo.py", line 3, in print(a/b) ZeroDivisionError: division by zero此时会产生运行错误,因为 0 不可以作为除数。
按照报错信息进行改正,将 0 换为 2 后,就不会报错了,运行结果为:
4.0
Python try except语句
try except 语句是一种异常处理机制,用于捕获、处理可能引发异常的代码块,语法如下:try: # 可能引发异常的代码块 # 希望捕获异常的代码 except [异常类型1]: # 处理异常的代码块 1 except [异常类型2]: # 处理异常的代码块 2 ... except [异常类型N]: # 处理异常的代码块 N else: # 如果没有引发任何异常,则执行此代码块 finally: # 无论是否引发异常,都会执行此代码块下面举例子进行说明。定义 a 为 12,b 为 2,输出 a 除以 b 的结果。输入代码:
try: a = int(12) b = int(2) c = a / b print("a/b 的结果是:", c) except (ValueError, ArithmeticError): print("不能被 0 整除,请更换一个整数") except: print("未知错误,请检查") print("程序继续运行")运行程序,结果为:
a/b 的结果是: 6.0
程序继续运行
不能被 0 整除,请更换一个整数 程序继续运行
Python try except else语句
在 try except else 语句中,如果 try 语句没有捕获到任何异常,则执行 else 语句中的代码;相反,如果 try 语句捕获到异常,则调用对应的 except 语句进行异常处理,此时不会执行 else 语句中的代码。下面使用 try except else 语句。定义 a 为 2,输入代码:
try: a = 2 b = 10 / a print(b) except ValueError: print('必须输入整数') except ArithmeticError: print('除数不能为 0, 请重新输入') else: print('没有出现异常') print("执行完成")运行程序,结果为:
5.0 没有出现异常 执行完成由此可见,a 为 2 时,先执行 print(b) 语句,再执行 else 语句中的代码。
下面进行异常处理,将 a 的值改为整数 0,程序的运行结果为:
除数不能为 0, 请重新输入 执行完成由此可见,a 为整数 0 时,代码异常,会先执行 print('除数不能为0,请重新输入') 语句,再执行 print("执行完成") 语句,不会执行 else 语句中的代码。
Python try except finally语句
try except finally 语句用于处理异常和执行清理操作,语法如下:try: # 代码块,可能会抛出异常 except ExceptionType1: # 异常处理代码块,用于处理 ExceptionType1 类型的异常 except ExceptionType2: # 异常处理代码块,用于处理 ExceptionType2 类型的异常 finally: # 清理操作的代码块,无论是否捕获异常都会执行此部分try 块中的代码是我们希望执行的代码块。如果在执行这些代码时抛出了异常,则会跳过后续 try 块中的代码,并查找匹配的 except 块以处理异常。如果找到了匹配的 except 块,则执行相应的处理代码。如果没有找到匹配的 except 块,或者在处理异常时又抛出了新的异常,则将向上传递异常。
无论是否捕获到异常,都会执行 finally 语句。finally 语句通常用于执行一些清理操作,如关闭文件、释放资源。即使在 try 块中抛出了异常,finally 语句也会被执行。
下面举一个例子:
try: # 尝试执行可能引发异常的代码 x = 1 / 0 except ZeroDivisionError: # 处理 ZeroDivisionError 异常 print("除数不能为零") finally: # 执行清理操作的代码 print("清理操作")运行结果为:
除数不能为零 清理操作在这个例子中,试图用 1 除以 0,这会引发 ZeroDivisionError 异常。except ZeroDivisionError 语句捕获到这个异常并打印一条消息。finally 语句会被执行,并打印出一条”清理操作”的消息。
try except finally 语句提供了一种结构化的方式来处理异常,并在异常处理后执行一些清理操作,使我们能更好地控制程序的流程,同时确保资源的正确释放。
下面再举一个例子。输入代码:
try: a = int(2) print(10 / a) except: print("执行 except 发生错误异常") else: print("执行 else 块中的代码") finally: print("执行 finally 块中的代码")运行结果为:
5.0 执行 else 块中的代码 执行 finally 块中的代码