简介
在这个实验中,你将学习如何检查 Python 中是否抛出了异常。本实验重点在于理解异常,并使用 try-except
代码块来捕获和处理它们,以防止程序崩溃。
你将首先创建一个会抛出 ZeroDivisionError
异常的 Python 脚本。然后,你将学习如何使用 try-except
代码块来捕获这个异常并妥善处理,使你的程序能够继续运行。
在这个实验中,你将学习如何检查 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
代码块来捕获和处理 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
来处理它。