详解在Python中处理异常的教程

  • Post category:Python

详解在 Python 中处理异常的教程

在 Python 中,出现错误时会抛出异常。异常是一种在运行时发生的意外或错误情况。如果程序没有处理异常,那么程序就会崩溃并抛出错误信息。因此,正确处理异常显得至关重要。本教程将详细介绍在 Python 中处理异常的方法。

语法

Python 提供了 try-except 语句用于处理异常。其基本语法如下:

try:
    代码块1
# 当代码块1抛出异常时,执行代码块2
except 异常1:
    代码块2
# 当代码块1抛出异常且异常是异常2时,执行代码块3
except 异常2:
    代码块3
# 没有发生异常时,执行代码块4
else:
    代码块4
# 无论是否发生异常都执行代码块5
finally:
    代码块5

抛出异常

除了 Python 内置的异常类型,我们也可以自定义异常。我们可以使用 raise 语句来抛出异常。下面是一个示例:

try:
    age = int(input("请输入一个大于等于 18 的整数:"))
    if age < 18:
        raise ValueError("该年龄不合法!")
except ValueError as e:
    print(e)

这个示例中,我们要求用户输入一个大于等于 18 的整数。如果用户输入的整数小于 18,我们就使用 raise 语句抛出一个 ValueError 异常。程序会被跳转到 except 代码块中并打印错误信息。

异常类型

Python 内置了很多异常类型,如 IndexError、TypeError、ZeroDivisionError 等。我们可以在 except 语句块中指定需要处理的异常类型。如果出现其他异常,则不会被处理。下面是一个示例:

try:
    x = [1, 2, 3]
    print(x[3])
except IndexError as e:
    print("出现了 IndexError:", e)
except TypeError as e:
    print("出现了 TypeError:", e)

这个示例中,我们引发了 IndexErorr 异常并捕获了它。由于异常类型和 except 代码块中指定的类型不一致,所以该异常没有被处理。

总结

在 Python 中处理异常是一个至关重要的问题。本教程介绍了异常处理的基本语法,以及如何抛出和捕获异常。在实际工作中,除了 Python 内置的异常类型,我们也可以自定义异常类型来提高代码的可读性。通过完整的异常处理流程,我们可以增强程序的鲁棒性并保证程序正常运行。

以上是完整攻略,下面是两种处理异常的示例。

示例一

下面的示例是通过 try-except 语句处理异常的方式,当除数为 0 时,会抛出 ZeroDivisionError 异常。

try:
    dividend = int(input("请输入被除数:"))
    divisor = int(input("请输入除数:"))
    quotient = dividend / divisor
    print("商为:", quotient)
except ZeroDivisionError:
    print("出现了除数为 0 的情况!")

我们可以看到,当除数为 0 时,程序会跳转到 except 代码块中处理异常。

示例二

下面的示例是通过 raise 语句抛出异常的方式,在用户输入的年龄小于 18 时,会抛出 ValueError 异常。

try:
    age = int(input("请输入一个大于等于 18 的整数:"))
    if age < 18:
        raise ValueError("该年龄不合法!")
except ValueError as e:
    print(e)

当用户输入的年龄小于 18 时,程序会抛出 ValueError 异常,并跳转到 except 代码块中处理异常。