📜  python 默认错误处理程序 - Python (1)

📅  最后修改于: 2023-12-03 14:46:19.395000             🧑  作者: Mango

Python 默认错误处理程序

简介

在 Python 中,当程序遇到错误时,会自动抛出异常( Exception ),然后停止运行。这时如果没有对异常进行捕获和处理,程序就会终止运行,并在控制台输出异常信息。

Python 默认的异常处理程序为程序员提供了一种简便的方法来处理程序运行时的异常。如果你没有编写任何异常处理程序,Python 会将异常信息打印到标准错误(strerr)流,同时退出程序并返回非0值的状态码

以下是示例代码:

try:
    # some code
except Exception as e:
    print(f'Error: {e}', file=sys.stderr)
    sys.exit(1)

上述代码中,try/except 语句用于捕获可能导致程序崩溃的代码块。Exception 表示要捕获的异常类型。如果程序在 try 代码块中发生异常,那么程序将跳转到 except 代码块,打印异常信息并退出程序。

使用默认异常处理程序的注意事项

如果你对默认异常处理程序不作任何处理,Python 默认的处理程序将会输出异常信息,并将程序终止运行。这通常是不希望看到的结果。实际上,你需要彻底理解如何使用默认异常处理程序,并在你的程序中进行适当的异常处理。

以下为 Python 内置的异常类型

  • BaseException 所有异常的基类
  • Exception 常规异常的基类
  • ArithmeticError 所有数学错误的基类
  • TypeError 由于类型不匹配引起的异常
  • ValueError 由于值不合法引起的异常
  • ZeroDivisionError 除数为零引起的异常
  • FileNotFoundError 找不到指定文件引起的异常

以下是一个示例代码,用于演示如何在自己的程序中处理上述异常类型:

import os

# 异常处理代码
try:
    fp = open('non_existent_file.txt')
except FileNotFoundError as e:
    print(f'{e.__class__.__name__}: {e}', file=sys.stderr)
    sys.exit(1)

try:
    result = 10 / 0
except ZeroDivisionError as e:
    print(f'{e.__class__.__name__}: {e}', file=sys.stderr)
    sys.exit(1)

# 其他代码,如果没有异常则继续执行

如果在这段代码中,open 语句无法打开指定文件,那么引发 FileNotFoundError 异常。我们捕获这个异常并在控制台打印异常信息。如果能够成功打开文件,则不会抛出异常,进入下一个 try 代码块。我们在这个 try 代码块中故意尝试除以零,来触发 ZeroDivisionError 异常。同样,我们捕获这个异常并在控制台输出异常信息。

最后需要注意的一点是,不要在你的程序中使用 except BaseException 来捕获所有异常。这会导致你的程序在遇到任何异常后都会终止运行,这显然不是我们想要的结果。

总结

Python 默认的异常处理程序为程序员提供了方便快捷的方法来处理程序运行时的异常。你需要认真理解这个机制,并在你的程序中进行适当的异常处理。通过使用 try/except 语句和指定异常类型,我们可以将异常分类、处理,在这种方式下程序会更稳定、可靠。