なんてことはない記事なのですがpythonの例外について少し理解が深まったのでメモがてら記事にしてみます。まずはじめに例外とはエラーのことであるっていうのがとりあえず前提です。
pythonで例外を捕捉する。
プログラミングを学んでいるとよく「例外を捕捉する」という言葉がでてくると思います。ほとんどのプログラミング言語でたぶん一緒だと思いますが、例外を捕捉するといったら、例外がおきそうなコードをtryで囲むってことを言っていると思います。
try: hoge() except: fuga()
pythonで例外を捕捉する一番簡単なコードのだとこれですよね。hoge()でエラーが発生したら。fuga()を実行する
pythonで例外の名前を調べる
pythonで例外が発生したけど、例外の名前がわからないことがあります。というかさっきの見出しのコードだと例外の名前がわからずじまいです。普通は起きる例外を予測して書くのが一般的だそうです。
例外の名前はtryを使わなかったらわかるのですが、sys.exc_info()を使うとエラーの名前がわかるようです。
try: hoge() except: print(sys.exc_info())
pythonで例外のメッセージを調べる
pythonで例外のメッセージを調べるには、Exceptionのargsを使えばわかるようです。
try: hoge() except Exception as e: print("例外args:", e.args) fuga()
しかし詳細なExceptionを指定しないのはナンセンス?だそうです。(エラーがおこっているのにそれがなにかわからないってのがだめらしい)
こちらからしてみればエラーなんておきるまでわからないわけですが?(たぶんそういうことを言っているんじゃないと思うけど)
まとめ
なにかスクリプトをつくっていると何回もエラーに遭遇するわけですが、tryをただつかっていると、エラーがなにかわからないままにしている場合があります。ですから、exceptとただ漠然と書くのではなくexcept Exception as e:のを癖にしたほうがいいなと思いました。
コメント