
1. 理解异常
异常是指程序运行期间发生的错误或异常情况,可能由各种原因引起,例如:
- 语法错误:代码中存在语法错误,导致程序无法编译或执行。
- 运行时错误:代码在运行时发生错误,例如除以零、索引超出范围、文件不存在等。
- 逻辑错误:代码逻辑不正确,导致程序行为不符合预期。
2. Python 异常处理机制
python 提供了异常处理机制来处理程序运行期间发生的异常,它主要包括 try、except 和 finally 三个语句。
立即学习“Python免费学习笔记(深入)”;
-
try语句块用于指定要尝试执行的代码。 -
except语句块用于指定当try语句块中发生异常时要执行的代码。 -
finally语句块用于指定无论try语句块是否发生异常,都要执行的代码。
3. 代码示例
# 导入异常处理模块
import sys
# 定义一个函数来读取文件
def read_file(filename):
# 使用 try 语句块来捕获异常
try:
# 打开文件
with open(filename, "r") as f:
# 读取文件内容
data = f.read()
# 关闭文件
f.close()
# 使用 except 语句块来处理异常
except FileNotFoundError:
# 文件不存在时,打印错误信息
print("Error: File not found.")
# 使用 finally 语句块来释放资源
finally:
# 无论是否发生异常,都关闭文件
f.close()
# 调用函数来读取文件
read_file("data.txt")
在上面的示例中,try 语句块用于尝试打开和读取文件,except 语句块用于处理文件不存在的异常情况,finally 语句块用于无论是否发生异常,都关闭文件。
4. 常见异常类型
Python 中有许多内置的异常类型,它们表示不同的错误或异常情况,例如:
-
NameError:表示未定义的变量或函数。 -
TypeError:表示类型不匹配。 -
ValueError:表示无效的值。 -
IndexError:表示索引超出范围。 -
KeyError:表示字典中不存在的键。
程序员可以通过 sys.exc_info() 函数来获取当前发生的异常信息,并根据不同的异常类型来采取不同的处理方式。
5. 自定义异常类型
除了内置的异常类型之外,程序员还可以自定义异常类型来处理特定的错误或异常情况。例如,可以定义一个 MyError 异常类型来处理应用程序中发生的自定义错误:
class MyError(Exception):
def __init__(self, message):
self.message = message
def my_function():
# 抛出自定义异常
raise MyError("An error occurred.")
try:
my_function()
except MyError as e:
# 处理自定义异常
print(e.message)
在上面的示例中,MyError 是一个自定义的异常类型,它继承自 Exception 类。当 my_function() 函数抛出 MyError 异常时,try 语句块捕获该异常并打印异常信息。
6. 总结
Python 异常处理机制是程序员在编写代码时必须掌握的关键技能之一,它可以帮助程序员优雅地处理程序运行期间发生的错误和异常情况,避免程序崩溃。











