42

运行时不断告诉我:

期望一个缩进块

但我不想在我的 except 块内写任何东西,我只想让它捕捉并吞下异常。

4

3 回答 3

100

写吧

pass

如在

try:
    # Do something illegal.
    ...
except:
    # Pretend nothing happened.
    pass

编辑:@swillden 提出了一个很好的观点,也就是说,这通常是一个糟糕的主意。你至少应该说

except TypeError, DivideByZeroError:

或您要处理的任何类型的错误。否则你可以掩盖更大的问题。

于 2009-10-07T00:34:35.173 回答
0

对于那些非常不清楚为什么要这样做的人。这是一个示例,我最初认为空块是个好主意:

def set_debug_dir(self, debug_dir=None):
    if debug_dir is None:
        debug_dir = self.__debug_dir
    elif isinstance(debug_dir, (Path, str)):
        debug_dir = debug_dir # this is my null operation
    elif isinstance(debug_dir, list):
        debug_dir = functools.reduce(os.path.join, debug_dir)
    else:
        raise TypeError('Unexpected type for debug_dir: {}'.format(type(debug_dir).__name__))

但重新组织声明会更清楚:

def set_debug_dir(self, debug_dir=None):
    if debug_dir is None:
        debug_dir = self.__debug_dir
    elif isinstance(debug_dir, list):
        debug_dir = functools.reduce(os.path.join, debug_dir)
    elif not isinstance(debug_dir, (Path, str)):
        raise TypeError('Unexpected type for debug_dir: {}'.format(type(debug_dir).__name__))
于 2021-02-04T23:29:37.963 回答
-1

我从未在更永久的代码中这样做过,但我经常将其作为占位符

if some_expression:
  True
else:
  do_something(blah)

只需将 True 插入其中即可停止错误。不确定这是否有什么不好的地方。

于 2009-10-07T02:27:33.870 回答