📜  打印异常类型python(1)

📅  最后修改于: 2023-12-03 15:10:01.970000             🧑  作者: Mango

打印异常类型 Python

在编写 Python 代码时,经常会发生错误。这些错误在 Python 中被称为异常。当异常发生时,程序会停止执行,并抛出一个错误消息。为了调试程序,我们需要知道发生了什么样的异常。在 Python 中,我们可以使用 tryexcept 块来捕获异常,并打印异常类型。

以下是一个示例程序:

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 相关的异常,而不会捕获其他类型的异常。