关于异常类实例的显示方法
with ...(异常类) as err:
pass
实际上err是异常类的一个实例
假设该异常类为一个自定义异常类,类中未手动写入__str__方法,程序捕获了异常之后,运行print(err),打印的实际上是抛异常时传入的实参,也即err.arg
例如抛异常的代码为raise MyException('1', '2'),则print(err)的结果为('1', '2')
在类中没有写__str__方法的前提下,为何在一般情况下,打印实例对象的到的结果一般都是<A object at ...内存地址>,而打印异常类的实例对象的结果却是err.arg?其中的机制是什么样的呢?
正在回答
同学你好:
raise的用法:
raise [exceptionName [(reason)]]
其中,用 [] 括起来的为可选参数,其作用是指定抛出的异常名称,以及异常信息的相关描述。如果可选参数全部省略,则 raise 会把当前错误原样抛出;如果仅省略 (reason),则在抛出异常时,将不附带任何的异常描述信息。
如果同学在ApiException类中重写了__str__()方法,那么会将传入的reason的信息进行格式化,反之直接将reason的信息输出,err的类型为<class '__main__.ApiException'>。
如果我解决了同学的问题,请采纳!学习愉快^_^。
- 参与学习 人
- 提交作业 2727 份
- 解答问题 8160 个
想要进入Python Web、爬虫、人工智能等高薪领域,你需要掌握本阶段的Python基础知识,课程安排带你高效学习轻松入门,学完你也能听得懂Python工程师的行业梗。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星