这是我需要移植的python2代码:
try:
do_something_with_file(filename)
except:
exc_type, exc_inst, tb = sys.exc_info()
exc_inst.filename = filename
raise exc_type, exc_inst, tb
使用上面的代码,我可以通过检查异常是否具有“文件名”属性来获取有问题的输入文件的整个异常。
但是 python3 的 raise 已经改变。这就是 2to3 给我的上述代码:
except Exception as e:
et, ei, tb = sys.exc_info()
e.filename = filename
raise et(e).with_traceback(tb)
这给了我另一个错误,我不认为文件名属性被保留:
in __call__
raise et(e).with_traceback(tb)
TypeError: function takes exactly 5 arguments (1 given)
我只想用一些信息透明地传递异常来跟踪输入文件。我想念python2 raise [exception_type[,exception_instance[,traceback]]]
- 我怎么能在python3中做到这一点?