【问题标题】:How to use decorator achieve listen except for Python 3.6? [duplicate]Python 3.6 除外,如何使用装饰器实现监听? [复制]
【发布时间】:2017-05-11 20:21:53
【问题描述】:

我想用decorator listen execpt,但是function_listen中没有显示异常。 我希望它可以听,但Python似乎无法这样做

def function_listen(func):
    try:
        def wapper(*args,**kwargs):
            return func(args,kwargs)
    except Exception:
        print(func.__name__+"ERROR")

@function_listen
def test():
    print(1/0)
if __name__ == '__main__':
    test()

C:\Python\Python36\python36.exe D:/MyCode/py/a.py

Traceback(最近一次调用最后一次):

文件“D:/MyCode/py/a.py”,第 12 行,在

测试()

TypeError: 'NoneType' 对象不可调用

进程以退出代码 1 结束

【问题讨论】:

    标签: python


    【解决方案1】:

    装饰器应该返回一个函数,你的返回None。您还使用错误的参数调用了func

    def function_listen(func):
        def wrapper(*args, **kwargs):
            try:
                return func(*args, **kwargs)
            except Exception:
                print(func.__name__ + "ERROR")
        return wrapper
    
    
    @function_listen
    def test():
        print(1/0)
    
    if __name__ == '__main__':
        test()
    
    # testERROR
    

    【讨论】:

    • 谢谢,你解决了我的问题
    猜你喜欢
    • 2022-12-05
    • 1970-01-01
    • 2011-08-21
    • 2011-02-02
    • 2020-02-29
    • 2021-12-28
    • 1970-01-01
    • 2023-02-07
    • 2019-04-01
    相关资源
    最近更新 更多