python自定义异常

Exception 

python的异常分为两种.
1、内建异常,就是python自己定义的异常。如:RuntimeError、IOError、IndentationError等
2、用户自定义异常。

常见的内置异常有:

å¨è¿éæå¥å¾çæè¿°

用户自定义异常首先需要继承Exception类

如:

Class CustomerError(Exception):

    def __init__(self, message):

        self.message = message

    

Raise 语句

raise语句的语法格式为:

raise [Exception [, args [, traceback]]]

语句中 Exception 是异常的类型(例如,NameError)参数标准异常中任一种,args 是自已提供的异常参数。

最后一个参数是可选的(在实践中很少使用),如果存在,是跟踪异常对象。

 Python的内核提供的异常,大多数都是实例化的类。

 

下面我们实现一个自定义的异常类:

#coding:utf8


class CustomError(Exception):
    def __init__(self, ErrorInfo):
        # super(self).__init__(self)
        self.errorinfo = ErrorInfo

    def __str__(self):
        return self.errorinfo

为了能够捕获异常,"except"语句必须有用相同的异常(或者直接抛出Exception)来抛出类对象或者字符串。

例如我们捕获以上异常,"except"语句如下所示:

#coding:utf8


class CustomError(Exception):
    def __init__(self, ErrorInfo):
        # super(self).__init__(self)
        self.errorinfo = ErrorInfo

    def __str__(self):
        return self.errorinfo


if __name__ == '__main__':
    try:
        raise CustomError("xxxx")
    except CustomError as e:
    # except Exception as e:
        print(e)

注:   当类自己定义了__str__(self)方法,那么当raise这个类实例时,就会返回从这个方法中return的数

总结:

  • 自定义异常类需要继承自Exception类。
  • 自定义异常类需要实现__str__方法来定义需要抛出的异常信息。
  • raise语句主动抛出异常。
  • 捕获异常需要通过try...except 语句,其中"except"语句必须有用相同的异常(或者直接抛出Exception)来抛出类对象。

你可能感兴趣的:(python)