项目中自定义python异常类
作为一个初学者 ,在github上看到一个项目中异常文件,我也不知道当时为什么这么写,越来越觉得写得是不是有问题,所以我先写一遍我认为是对的,在看一下那个项目怎么写的以及我为什么 认为有问题
首先定义异常基类
class Error(Exception):
"""Base class for exceptions in this module."""
pass
自定义异常类
class JsonPathFindError(Error):
"""JsonPath查找错误"""
def __init__(self, jsonpath:str):
self.jsonpath = jsonpath
def __str__(self):
return f'JsonPath 取值失败,表达式:{self.jsonpath}'
调用自己定义的异常
def test_exception_case2():
"""jsonpath找不到抛出异常"""
res = {'a':1, 'b':{'a':2}}
jsonpath = '$.c'
value = findall(jsonpath, res)
if value:
print(value[0])
else:
raise JsonPathFindError(jsonpath)
运行结果
common.errors.JsonPathFindError: JsonPath 取值失败,表达式:$.c
接下来 看一下我遇到的项目怎么写的
class ErrorMixin:
"""错误基类"""
def __init__(self, msg: str) -> None:
self.msg = msg
def __str__(self) -> str:
return self.msg
class JsonPathFindError(ErrorMixin, ValueError):
"""JsonPath查找错误"""
def __init__(self, msg: str) -> None:
super().__init__(msg)
我的想法一:
在这个例子中,基类直接pass,然后JsonPathFindError重写__init__、__str__方法,这样是不是 更好,我的理由是(1)既然自定义类当然有自定义内容,不止是名称(2)ErrorMixin的__str__其实也不用写,效果一样
原文地址:https://blog.csdn.net/qq_21319187/article/details/140737262
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!