最新消息:本站所有跳转向bbs.ykit.cn的附件将全面停止,附件已转移到https://www.qingsj.com

python pep 8:e722 do not use bare ‘except’

Python 有客 456浏览

不要使用裸异常,而是指定异常 (E722)

捕获异常时,尽可能提及特定异常,而不是使用裸except:子句。

一个简单的except:子句将捕获SystemExitKeyboardInterrupt异常,使使用 Control-C 中断程序变得更加困难,并且可以掩盖其他问题。如果要捕获所有表明程序错误的异常,请使用except Exception:(bare except 等价于 except BaseException:)。

反模式

以下代码有一个裸except:子句。

try:
    user = User.objects.get(pk=user_id)
    user.send_mail('Hello world')
except:
    logger.error('An error occurred!')

最佳实践

相反,尽可能捕获特定异常。

try:
    user = User.objects.get(pk=user_id)
    user.send_mail('Hello world')
except User.DoesNotExist:
    logger.error('The user does not exist with that ID')

转载请注明:有客帮 » python pep 8:e722 do not use bare ‘except’