自学内容网 自学内容网

项目中自定义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)!