在 python 类中使用装饰器处理异常

问题描述

假设我有这个类,我希望装饰器处理异常:

class A:

    def __init__(self,start: bool):
        self.start = start

    def enc(self,data):
        try:
            if self.start:
                return data.encode()
            return 'ok'
        except AttributeError:
            raise Exception('oh no')
    
    def dec(self,data):
        try:
            if self.start:
                return data.decode()
            return 'ok'
        except AttributeError:
            raise Exception('oh no')   


我想添加一个装饰器来处理异常:像这样:

(这不起作用,@A.type_exc_handler NameError: name 'A' is not defined):

class A:

    def __init__(self,start: bool):
        self.start = start
    
    
    def type_exc_handler(self,func):
        def inner(self,*args,**kwargs):
            try:
                func(self,**kwargs)
            except AttributeError:
                raise TypeError(f"oh no")
            return inner

    @A.type_exc_handler
    def enc(self,data):
        if self.start:
            return data.encode()
        return 'ok'

    @A.type_exc_handler
    def dec(self,data):
        if self.start:
            return data.decode()
        return 'ok'

我怎样才能做到这一点?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)