详解Python 定义自己的异常类

  • Post category:Python
  1. 定义自己的异常类

在Python中,自定义异常类需要继承Exception类或其子类。自定义的异常类可以包含多种信息,如错误提示和错误代码等。定义自己的异常类可以提高代码的可读性和可维护性。下面是一个定义异常类的简单示例:

class MyException(Exception):
    def __init__(self, message, code):
        super().__init__(message)
        self.code = code

在这个示例中,定义了一个名为MyException的异常类,它继承自Exception类。这个异常类包含两个属性:message和code。message用于保存异常信息,code用于保存异常代码。

  1. 抛出自定义异常类

在Python中,可以使用raise语句抛出异常。使用自定义异常类抛出异常的方法与使用内置异常类的方法相同。下面是一个抛出自定义异常类的简单示例:

def divide(a, b):
    if b == 0:
        raise MyException('Division by zero', 100)
    return a / b

在这个示例中,定义了一个名为divide的函数。如果divisor为0,就抛出MyException异常。如果divisor不为0,就返回a / b的结果。

  1. 捕获自定义异常类

在Python中,可以使用try-except语句捕获异常。捕获自定义异常类的方法与捕获内置异常类的方法相同。下面是一个捕获自定义异常类的简单示例:

try:
    result = divide(10, 0)
except MyException as e:
    print('Exception:', e.code, e)

在这个示例中,调用了divide函数,因为第二个参数为0,所以抛出了MyException异常。在except语句中捕获MyException异常,并打印异常代码和异常信息。

  1. 完整示例
class MyException(Exception):
    def __init__(self, message, code):
        super().__init__(message)
        self.code = code

def divide(a, b):
    if b == 0:
        raise MyException('Division by zero', 100)
    return a / b

try:
    result = divide(10, 0)
except MyException as e:
    print('Exception:', e.code, e)

在这个示例中,定义了一个名为MyException的异常类,它包含了message和code两个属性。定义了一个名为divide的函数,如果divisor为0,就抛出MyException异常。在try语句中调用divide函数,如果抛出MyException异常,就在except语句中捕获并打印异常信息。