Python异常处理机制与调试实战指南
本文详细介绍Python中异常处理的核心机制,涵盖try-except、else、finally子句的具体用法,以及如何通过raise主动抛出异常。通过年龄验证等实际代码示例,解析如何处理多个异常类型及常见调试场景,帮助开发者编写更健壮的Python程序。
前言:
异常是指在程序运行过程中,当发生错误时,在正常控制流程之外所采取的处理行为。


一、try-except结构

try:
age = int(input("请输入年龄:"))
if age >= 18:
print("你已成年")
else:
print("你未成年")
except ValueError as error:
print("输入不合法")
print(error)
print("程序结束")示例输出显示:当输入非数字字符'abc'时,程序捕获ValueError并打印'输入不合法'及具体错误信息'invalid literal for int() with base 10: 'abc'',随后执行'程序结束'。
二、try-except-else结构
当try块中的代码未引发任何异常时,程序将执行else子句中的语句。

try:
age = int(input("请输入年龄:"))
except ValueError as error:
print("输入不合法")
else:
if age >= 18:
print("你已成年")
else:
print("你未成年")
print("程序结束")示例输出显示:输入'a'导致ValueError,程序进入except分支打印'输入不合法',最终执行'程序结束'。
三、try-except-finally结构
无论是否发生异常,finally子句中的代码始终会执行,常用于资源清理操作,例如关闭文件。
try:
file = open("text.txt", "w") # 打开文件
s = "hello world"
file.write(s) # 操作文件
except:
print("操作异常")
finally: # 无论是否发生异常,都得执行
file.close() # 关闭文件
print("关闭文件")四、处理多个异常
方法一:分别列出不同的except子句来捕获不同类型的异常。
try:
age = int(input("请输入年龄:"))
x = 10 / age
except ValueError:
print("请输入整数")
except ZeroDivisionError:
print("年龄不能为0")
else:
print(f"age is {age}")
print(f"x is {x}")方法二:在单个except子句中通过元组指定多个异常类型。
try:
age = int(input("请输入年龄:"))
x = 10 / age
except (ValueError, ZeroDivisionError):
print("请输入合理的年龄")
else:
print(f"age is {age}")
print(f"x is {x}")五、raise主动抛出异常
在try语句中,只有当代码执行遇到错误时才会自动抛出异常;而raise语句用于在特定逻辑条件下主动抛出异常。
def is_adult(age):
if age < 18:
raise ValueError("你还未成年")
try:
age = int(input("请输入年龄:"))
is_adult(age) # 已经抛出<18的异常,except不会执行。如果是其他abc异常,仍会执行except
except ValueError as e:
print(e)
print("continue")示例输出显示:输入年龄'1',触发is_adult函数抛出ValueError('你还未成年'),程序打印该错误信息并继续执行'continue'。
到此这篇关于python异常处理并调试的文章就介绍到这了,更多相关python异常处理调试内容请搜索本站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本站!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









