Python 3.6.5中如何获取Exception的参数?
获取Python 3.6.5中异常参数的正确方法
嘿,你碰到的是Python 2和Python 3在异常捕获语法上的差异问题!你写的except ZeroDivisionError, args:是Python 2的写法,在Python 3里已经被废弃了,所以会报错。
在Python 3(包括你用的3.6.5版本)中,正确捕获异常并获取参数的方式是使用as关键字来绑定异常对象,具体写法如下:
try: c = 1 / 0 print(c) except ZeroDivisionError as args: print('error dividing by zero', args)
运行这段代码,你会看到输出:error dividing by zero division by zero,这里的args就是ZeroDivisionError的异常实例,直接打印它就能得到默认的错误提示信息。
如果你想更细致地获取异常的参数元组,可以访问异常对象的args属性,比如:
try: raise ValueError("Invalid input", 100) except ValueError as e: print("Error details:", e) print("Raw arguments:", e.args)
这段代码会输出:
Error details: Invalid input Raw arguments: ('Invalid input', 100)
总结一下:Python 3彻底抛弃了Python 2中except 异常类, 变量名的语法,统一使用except 异常类 as 变量名来捕获并获取异常对象,通过这个对象你就能拿到所有异常相关的信息啦。
内容的提问来源于stack exchange,提问作者Arn121654
相关产品推荐
相关产品推荐

