pycodestyle(PEP8)のtry except構文に関するエラーについて
|
久しぶりにPythonのコードを書いているのですが、try except構文で下記のようなエラーが発生しました。
error| E722: do not use bare 'except'
ちなみに構文チェックにpycodestyle(PEP8)というリンターを使っており、上記エラーはPEP8の指摘です。
try except構文のベストプラクティス
try except文を利用する場合、exceptブロックでは可能な限り例外処理を指定しろとのことです。
catch specific exceptions whenever possible.
# example
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')
キャッチしたい例外がない場合
キャッチしたい特定の例外がない、あるいは例外処理の前に処理をしたい場合、exceptに BaseException
を指定することで回避できます。
try:
subprocess.check_call(pkill)
print('hogehoge')
except BaseException:
print('mogumogu')
しかしこの方法については議論が分かれているらしく、BaseExceptionを指定する方法が最良の方法ではないようです。(参考: https://github.com/PyCQA/pycodestyle/issues/703 )
まとめ
try except構文のE722エラーについて、解決策をまとめました。
そもそもtry except構文はあまり多用しないようにコーディングするのがいいのかもしれませんね。