gpt4 book ai didi

python - 防止 main 中的回溯

转载 作者:行者123 更新时间:2023-12-03 08:24:45 24 4
gpt4 key购买 nike

在我的 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

这肯定会产生更健壮的代码,因为您作为调用者可以控制您调用的函数。

关于python - 防止 main 中的回溯,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44936500/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com