📅  最后修改于: 2023-12-03 15:10:01.970000             🧑  作者: Mango
在编写 Python 代码时,经常会发生错误。这些错误在 Python 中被称为异常。当异常发生时,程序会停止执行,并抛出一个错误消息。为了调试程序,我们需要知道发生了什么样的异常。在 Python 中,我们可以使用 try
和 except
块来捕获异常,并打印异常类型。
以下是一个示例程序:
try:
x = 1 / 0
except Exception as e:
print(type(e).__name__)
这个程序会尝试将 1 除以 0,这是一个不合法的操作,会引发 ZeroDivisionError
异常。在 except
块中,我们使用 type(e).__name__
来打印异常类型的名称。这会输出 ZeroDivisionError
。
我们可以通过改变 try
块中的代码来引发不同类型的异常。以下是一些常见的 Python 异常类型和它们的名称:
ZeroDivisionError
:除以零错误NameError
:尝试访问一个未定义的变量TypeError
:类型错误,例如将一个字符串传递给期望一个整数的函数IndexError
:尝试访问一个不存在的索引KeyError
:尝试访问一个不存在的字典键ValueError
:传递给函数的参数无效FileNotFoundError
:尝试打开一个不存在的文件在打印异常类型时,我们可以使用 str()
函数将异常对象转换为字符串,以便获得更详细的信息。以下是一个示例程序:
try:
with open('nonexistent_file.txt', 'r') as f:
pass
except Exception as e:
print(str(e))
这个程序会尝试打开一个不存在的文件。由于文件不存在,会引发 FileNotFoundError
异常。在 except
块中,我们使用 str(e)
来打印完整的异常消息。这会输出类似于 No such file or directory: 'nonexistent_file.txt'
的消息,其中包含了异常的类型和详细的错误信息。
在处理异常时,建议使用具体的异常类型,而不是 Exception
。这有助于确保我们只捕获我们期望的异常,而不会忽略其他类型的异常。例如,以下程序会只捕获 FileNotFoundError
异常:
try:
with open('nonexistent_file.txt', 'r') as f:
pass
except FileNotFoundError as e:
print(str(e))
这个程序与前面的程序类似,但我们使用的是 FileNotFoundError
异常而不是 Exception
。这能够确保我们只捕获与文件 I/O 相关的异常,而不会捕获其他类型的异常。