在我的main.py
模块中,我myFunc()
从util.py
. 在 中util.py
,我处理myFunc()
可能抛出的异常,并调用sys.exit(1)
. 但是,我的main.py
模块中仍然有 Traceback 打印。有没有办法简单地捕获异常util
而不必处理任何输出main
,或者对我来说捕获异常main
而不是捕获异常更好util
?
def get_token(token_name):
token_handler = Tokens(token_name)
try:
token = token_handler.get()
except TokenException as e:
logging.error("{error}".format(error=e))
sys.exit(1)
return token
这是一个设计原则问题,但总体思路是仅在您知道如何处理异常时才捕获异常。
吞下异常不是一个好主意,因为它使调试变得更加困难。尤其是当您像这样编写具有多个调用点的关键代码时。函数内部生成的异常应该重新抛出/重新引发,以便由调用该函数的代码处理。
例如,您可以考虑utils.py
这样修改:
def get_token(token_name):
token_handler = Tokens(token_name)
try:
token = token_handler.get()
except TokenException as e:
# write to some log file if needed
raise e
return token
同样,你main.py
会看起来像这样:
try:
token = get_token(token_name)
except TokenException:
... # handle TokenException
except Exception:
... # handle any other Exception
这当然会产生更健壮的代码,因为您作为调用者可以控制您调用的函数。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句