我应该在我的异常类中定义什么,以便外壳以有意义的方式打印它?我尝试了以下方法:#!/usr/bin/env python3.4class MyError(Exception):def __init__(self, myparam1, myparam2):self.myparam1 = myparam1self.mypara...

我应该在我的异常类中定义什么,以便外壳以有意义的方式打印它?我尝试了以下方法:
#!/usr/bin/env python3.4
class MyError(Exception):
def __init__(self, myparam1, myparam2):
self.myparam1 = myparam1
self.myparam2 = myparam2
def __str__(self):
return 'param1: {0}, param2: {1}'.format(self.param1, self.param2)
def __repr__(self):
return self.__str__()
if __name__ == "__main__":
raise MyError(1, 2)
这给了我
Traceback (most recent call last):
File "./tmp.py", line 18, in <module>
raise MyError(1, 2)
__main__.MyError
我想看到的是__str__调用的结果.
解决方法:
Exception中的__init__方法接受异常消息作为参数.您可以从__init__方法调用它.
class MyError(Exception):
def __init__(self, param1, param2):
super(MyError, self).__init__('param1: {0}, param2: {1}'.format(param1, param2))
>>> raise MyError(1,2)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
__main__.MyError: param1: 1, param2: 2
或者,如果您要依靠异常的__str__方法提供消息,则可以将异常实例本身作为消息传递给超类__init__:
class MyError(Exception):
def __init__(self, myparam1, myparam2):
super(MyError, self).__init__(self)
self.myparam1 = myparam1
self.myparam2 = myparam2
def __str__(self):
return 'param1: {0}, param2: {1}'.format(self.myparam1, self.myparam2)
def __repr__(self):
return str(self)
沃梦达教程
本文标题为:在python中,如何获取自己的异常类以在shell中漂亮地打印出来?


基础教程推荐
猜你喜欢
- python_day32 进程 2023-09-03
- python之进程池和线程池 2023-09-03
- python-提供管理静态文件的Django React Nginx 2023-11-11
- python中的GUI实现计算器 2023-08-04
- python 基于aiohttp的异步爬虫实战详解 2022-10-20
- pandas学习之df.fillna的具体使用 2022-08-30
- Pygame鼠标进行图片的移动与缩放案例详解 2023-08-11
- 为什么在CPython退出时没有释放所有内存? 2023-11-11
- Python教程之基本运算符的使用(下) 2022-10-20
- ubuntu下使用pyinstaller将python文件打包成exe(py文件中含有keras框架的代码) 2023-09-03