首页 > 解决方案 > 每个裸露的“除了”都可以转换成更好的东西吗?

问题描述

我正在努力使用以下代码。我的目标是检查是否arg可以执行 which is a string 来决定不同的返回值。

    def process(arg):
        try:
            return eval(arg)
        except:
            return arg

Pycharm 告诉我不要使用裸露的“除外”,但我找不到一个好的选择。我也想知道这是否是另一种选择?

标签: python

解决方案


如果您只是使用except,那么您会捕获从 BaseException 继承的所有内容,包括 KeyboardInterrupt 之类的内容。这可能不是您想要的。很有可能您最终会掩盖您真正想知道的错误情况。

本页讨论了捕获所有异常的潜在好处——记录异常(例如在程序或模块的顶层)并立即重新引发它。关于重新加注的那一点很重要,因为这意味着你没有在不应该隐藏错误的时候隐藏错误。


推荐阅读