pylint警告'除了异常:'

yan*_*nko 19 python pylint

对于像这样的块:

try:
    #some stuff
except Exception:
    pass
Run Code Online (Sandbox Code Playgroud)

pylint引发警告W0703'Catch"Exception"'.为什么?

Gre*_*reg 26

通常不会捕获根Exception对象,而是捕获更具体的对象(例如IOException),这被认为是一种好习惯.

考虑是否发生了内存不足异常 - 只需使用"pass"就不会让程序保持良好状态.

几乎唯一一次你应该捕获异常是在你的程序的顶层,你可以(尝试)记录它,显示错误,并尽可能优雅地退出.

  • 这个坏习惯也会产生相当多的调试噩梦.特别是在你的try/except中提出了除你想到的之外的其他异常.而这恰好发生了...... (3认同)
  • 如果您确实想使用该捕获,可以使用以下构造禁用 pylint 警告:` except Exception: # pylint:disable=broad- except` (3认同)

Jon*_*ley 18

只捕捉非常窄范围的类型是一种好习惯."异常"过于笼统 - 您最终不仅会捕获您计划的错误,还会捕获其他错误,这可能会掩盖您的代码中的错误,如果它们根本没有被捕获,或者可能会更快地被诊断出来最好由一个非常高级别的异常处理程序来处理.

话虽如此,从Python2.6开始,捕获Exception已经变得更加合理,因为你不想捕获的所有异常(SystemExit,KeyboardInterrupt)都不再继承Exception.相反,它们继承了常见的BaseException.这是故意做的,以便使捕获异常相对无害,因为它是如此常见的习语.

有关详细信息和未来计划,请参阅PEP 3110.