关于except的逻辑
老师您好,我按照类方法的方式进行修改后,能够成功运行,但是问题又来了
在最后的输出上,为什么e会在----的前面输出呢?不符合print的顺序呀
而且我将上面的print改成return之后,就没法正常输出了
麻烦请问老师以下关于except的逻辑,我还以为他就是直接执行对应代码,现在看来可能更复杂一点
谢谢老师
正在回答 回答被采纳积分+1
同学你好:
出现你所说状况的原因是结果中打印的‘Error:40002---两个参数必须是整数’并不是print(e)输出的,而是类方法exa()的print('Error:{0}---{1}'.format(err_code, err_msg))输出的。
是在try中的rest = divide( 5,0.1)这一行调用了divide(),之后raise BadPramsException(),在BadPramsException中调用类方法exa()而输出的‘Error:40002---两个参数必须是整数’。所以会在‘------------’的前面输出。e没有值所以输出为空。
except是用来捕获异常的,逻辑是很复杂的,不是几行代码就能实现的,所以在课程中没有讲到。在自定义异常中,因为继承于Exception类,所以会将参数传递给e,在except XXException as e时赋值给e并输出。而且这里使用了魔法传参,就可以传递多个值。
所以可以在BadPramsException()中加参数,就会被except BadPramsException as e将参数赋值给e,在print(e)中输出。
最后呢如果想格式化e的输出建议还是根据课程为异常类重写__str__()方法。
如果解决了你的疑惑,请采纳,祝学习愉快~
- 参与学习 人
- 提交作业 2727 份
- 解答问题 8160 个
想要进入Python Web、爬虫、人工智能等高薪领域,你需要掌握本阶段的Python基础知识,课程安排带你高效学习轻松入门,学完你也能听得懂Python工程师的行业梗。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星