有没有我可以用来捕捉python中的错误而不使用try / except?
我在考虑这样的事情:
main.py
from catch_errors import catch_NameError
print(this_variable_is_not_defined)
catch_errors.py
def catch_NameError(error):
if type(error) == NameError:
print("You didn't define the error")
输出结果为:
You didn't define the error
而不是:
Traceback (most recent call last):
File "main.py", line 1, in <module>
print(this_variable_is_not_defined)
NameError: name 'this_variable_is_not_defined' is not defined
答案 0 :(得分:0)
可以通过创建上下文管理器来完成,但它比明确的try:except:
带来了可疑的好处。您将不得不使用with
语句,因此将清楚行为将在何处更改。在此示例中,我使用contextlib.contextmanager
执行此操作,这样可以节省使用__enter__
和__exit__
方法创建类的乏味。
from contextlib import contextmanager
@contextmanager
def IgnoreNameErrorExceptions():
"""Context manager to ignore NameErrors."""
try:
yield
except NameError as e:
print(e) # You can print whatever you want here.
with IgnoreNameErrorExceptions():
print(this_variable_is_not_defined)
这将输出
name 'this_variable_is_not_defined' is not defined