今回はPythonにおける例外エラーのハンドリングについてです。誰でも自分がコードを書く際は「問題ない」と信じて書くものですが、自分は完璧ではないのでエラーハンドリング処理を込めてコードを書くように励行しましょう。
Pythonでの例外エラー処理は「try, except, else, finally」の4つを使います。「else, finally」は省略可能です。
chara = 'test' num = 123 try: #例外エラーが発生するかもしれないが実行したい print(chara+num) #string型であるべきなのにnumがint型になっているのでエラー except: #例外エラーの発生があった場合 print('You need make num to String!') else: #例外エラーの発生がなかった場合 print('No error') finally: #例外エラーの発生の有無によらず print('ending code') # 出力結果は下記の通りになる # You need make num to String! # ending code
なお、それぞれのケースで実行する内容が空欄だと構文エラー(Syntax Error)が出ます。ケース自体は存在させるが、特に何も実行させない場合は「pass」と記載します。具体的には下記の通りです。
chara = 'test' num = 123 try: #例外エラーが発生するかもしれないが実行したい print(chara+num) #string型であるべきなのにnumがint型になっているのでエラー except: #例外エラーの発生があった場合 pass # 出力結果は下記の通りになる # You need make num to String! # ending code
exceptの後ろに特定のエラーを指定することで、特定のエラーを指し示してexceptすることもできます。
エラーハンドリングはKaggleコンペでも非常に重要です。Kaggleコンペのプライベートテストでは、データ量が増えることも影響大ですが、意図的にエラーを出させる非常にトリッキーなデータも混ぜられている様子です。