在 main 中防止回溯

尼尚·罗伊

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

这是一个设计原则问题,但总体思路是仅在您知道如何处理异常时才捕获异常

吞下异常不是一个好主意,因为它使调试变得更加困难。尤其是当您像这样编写具有多个调用点的关键代码时。函数内部生成的异常应该重新抛出/重新引发,以便由调用该函数的代码处理。

例如,您可以考虑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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

防止在C ++中递归调用main()

来自分类Dev

main.lua:45:尝试索引全局“ heroClass”(nil值)堆栈回溯:main.lua:45:在主块中

来自分类Dev

main()如何调用?在__libc_start_main()中调用main()

来自分类Dev

在Java中的main内部调用main方法

来自分类Dev

C中的main()函数

来自分类Dev

cmdLine中main的参数

来自分类Dev

在C中打印main()

来自分类Dev

在main()中控制cin

来自分类Dev

src / main / resources中的FileNotFoundException

来自分类Dev

Java类中的静态main

来自分类Dev

在C中调用main函数

来自分类Dev

main()方法中包含的类

来自分类Dev

从main访问void中的变量

来自分类Dev

条件中main()上的NullPointerException

来自分类Dev

在C中调用main函数

来自分类Dev

从main访问void中的变量

来自分类Dev

Java中的main调用方法

来自分类Dev

main.storyboard中的错误

来自分类Dev

无法在Main()中调用方法?

来自分类Dev

main方法中的同步块

来自分类Dev

如何从 Main 中获取 IConfiguration?

来自分类Dev

忽略头文件中的 main

来自分类Dev

在 main() 中声明结构体

来自分类Dev

从 main 中的类调用函数

来自分类Dev

线程[main](已暂停(进入Game中的方法main))

来自分类Dev

在Netbeans IDE中设置Main Class和main()方法

来自分类Dev

在 main 之外定义的函数内分配 main 中的数组

来自分类Dev

Java :(错误)Main.main中的线程“ main”中的异常java.lang.NullPointerException(Main.java:14)

来自分类Dev

在Visual Studio Code中,为什么它会在类之外自动创建“ main :: main和main ::〜main”?