python在抛出错误raise时,如何将相关信息一同携带出来(抛出自定义对象)?

面向“对象”编程 / 2023-08-11 / 原文

示例

  • 代码示例
class MyClass(Exception):
    def __init__(self, info):
        self.info = info

    def my_method(self):
        print('MyClass.my_method print self.info:', self.info)

try:
    raise MyClass('错误信息')
except MyClass as e:
    print('e: ', e)
    print('type(e): ', type(e))
    e.my_method()
  • 运行结果
e:  错误信息
type(e):  <class '__main__.MyClass'>
MyClass.my_method print self.info: 错误信息

可见,可将相关属性及自定义一些方法进行抛出,通过try except捕捉到e后,进行后续操作,比纯抛出Exception灵活性更大,比return一层层返回更方便。