介绍
在这个实验中,你将学习如何检查 Python 中是否抛出了异常。本实验重点在于理解异常,并使用 try-except 代码块来捕获和处理它们,以防止程序崩溃。
你将首先创建一个会抛出 ZeroDivisionError 异常的 Python 脚本。然后,你将学习如何使用 try-except 代码块来捕获这个异常并妥善处理,使你的程序能够继续运行。
理解异常
在这一步中,你将学习 Python 中的异常。异常是程序执行期间发生的、会打乱正常指令流程的事件。理解异常对于编写健壮且可靠的 Python 代码至关重要。
当 Python 中出现错误时,会抛出一个异常。如果该异常未得到处理,程序将终止并显示错误消息。不过,通过使用 try-except 代码块,你可以捕获并处理异常,防止程序崩溃。
让我们从一个抛出异常的简单示例开始:
在 LabEx 环境中打开 VS Code 编辑器。
在
~/project目录下创建一个名为division.py的新文件。~/project/division.py将以下代码添加到
division.py文件中:numerator = 10 denominator = 0 result = numerator / denominator print(result)这段代码尝试将 10 除以 0,这是一个无效操作,会抛出
ZeroDivisionError异常。在终端中使用以下命令运行脚本:
python division.py你将看到类似如下的输出:
Traceback (most recent call last): File "/home/labex/project/division.py", line 3, in <module> result = numerator / denominator ZeroDivisionError: division by zero回溯信息显示,
division.py文件的第 3 行发生了ZeroDivisionError。由于异常未得到处理,程序终止了。
现在,让我们看看如何使用 try-except 代码块来处理这个异常。
使用 try-except 进行捕获
在这一步中,你将学习如何使用 try-except 代码块来捕获和处理 Python 中的异常。这能让你的程序即使在出现错误时也能继续运行。
try-except 代码块的基本结构如下:
try:
## Code that might raise an exception
except ExceptionType:
## Code to handle the exception
try 代码块内的代码会被执行。如果发生了 ExceptionType 类型的异常,except 代码块内的代码就会被执行。如果没有异常发生,except 代码块将被跳过。
让我们修改上一步中的 division.py 文件,以处理 ZeroDivisionError 异常:
在 VS Code 编辑器中打开
division.py文件。修改代码,加入
try-except代码块:try: numerator = 10 denominator = 0 result = numerator / denominator print(result) except ZeroDivisionError: print("Error: Cannot divide by zero.")在这段代码中,
try代码块包含了可能会抛出ZeroDivisionError的除法运算。except代码块捕获ZeroDivisionError并打印一条错误消息。在终端中使用以下命令运行脚本:
python division.py你将看到以下输出:
Error: Cannot divide by zero.现在,程序没有崩溃,而是优雅地处理了
ZeroDivisionError并打印了一条有用的消息。
这展示了如何使用 try-except 代码块来防止程序因异常而崩溃。
检查异常类型
在这一步中,你将学习如何在 except 代码块中检查异常类型并访问异常消息。这能让你以不同的方式处理不同类型的异常,并提供更具信息性的错误消息。
当捕获到异常时,你可以使用 as 关键字在 except 子句中将其赋值给一个变量:
try:
## Code that might raise an exception
except ExceptionType as e:
## Code to handle the exception
## 'e' is the exception object
变量 e 随后将包含异常对象,你可以使用它来访问有关异常的信息,例如其类型和消息。
让我们修改 division.py 文件,以检查异常类型并打印异常消息:
在 VS Code 编辑器中打开
division.py文件。修改代码以检查异常类型并打印消息:
try: numerator = 10 denominator = 0 result = numerator / denominator print(result) except ZeroDivisionError as e: print(f"Error: {type(e).__name__} - {e}")在这段代码中,我们捕获
ZeroDivisionError并将其赋值给变量e。然后,我们使用type(e).__name__来获取异常类型的名称,使用e来获取异常消息。我们将两者打印在一个格式化字符串中。在终端中使用以下命令运行脚本:
python division.py你将看到以下输出:
Error: ZeroDivisionError - division by zero现在的输出包含了异常类型 (
ZeroDivisionError) 和异常消息 (division by zero)。
这能让你提供有关所发生错误的更详细信息,从而更轻松地调试代码。你还可以利用这些信息以不同的方式处理不同类型的异常,为每种情况提供更具体的错误处理。
总结
在这个实验中,你学习了 Python 中的异常,异常是会打乱程序正常流程的事件。当错误发生时,会抛出异常,如果不进行处理,程序就会终止。
你还学习了如何使用 try-except 代码块来捕获和处理异常,从而防止程序崩溃。本实验展示了 ZeroDivisionError 以及如何使用 try-except 来处理它。



