Python异常处理:完整实战指南
错误是软件开发中不可避免的一部分。即使是最精心编写的代码,也可能遇到意外情况:文件缺失、除零错误、网络连接问题等等。为了防止程序在这些情况下崩溃,Python提供了强大的异常处理机制,核心就是try-except-finally结构。
Python中的try-except-finally是如何工作的?
try-except-finally结构允许你捕获程序运行时发生的异常,并做出适当的响应。
基本语法:
try:
# 可能引发异常的代码
except SomeException:
# 异常处理代码
finally:
# 无论是否发生异常都会执行的代码
各模块说明:
try:在此模块中放置可能引发异常的主要代码。except:指定当try模块中发生异常时应执行的操作。可以指定要捕获的特定异常类型(SomeException)。finally:无论try模块是否产生异常,finally模块都会执行。通常用于释放资源,如关闭文件、网络连接或数据库连接。
try-except-finally使用示例
try:
number = int(input("请输入一个整数:"))
result = 10 / number
print(f"计算结果:{result}")
except ZeroDivisionError:
print("错误:不允许除以零。")
except ValueError:
print("错误:请输入有效的整数。")
finally:
print("程序执行结束。")
代码运行逻辑:
- 程序提示用户输入一个整数。
- 如果用户输入
0,会引发ZeroDivisionError异常,执行对应的except模块。 - 如果用户输入的不是整数,会引发
ValueError异常,执行对应的except模块。 - 无论是否发生异常,
finally模块都会执行,输出程序结束信息。
为什么需要finally模块?
finally模块确保无论是否发生异常,关键代码都能被执行。以下是几个常见的使用场景:
-
关闭文件:
file = open("data.txt", "r") try: content = file.read() # 处理文件内容 finally: file.close() # 确保文件被关闭 -
释放资源:释放网络连接、数据库连接等使用后必须关闭或释放的资源。
-
完成日志记录或清理临时数据:使用
finally模块完成日志文件的写入,或删除程序运行过程中创建的临时文件。
处理多个异常
同一个try模块中可能引发多种不同类型的异常。Python提供了多种处理方式:
使用多个except模块
try:
number = int(input("请输入一个数字:"))
result = 100 / number
print(resu