Pythonコード紹介!!エラー処理try、expect
はじめに
この記事では、エラー処理に使われるPythonのコードを紹介します
関数紹介シリーズと一緒です
シリーズ名を変えただけです
色々考えたけど、関数紹介よりコード紹介の方が汎用性が高そうだなって…
汎用性も可読性も大事なのです
Pythonと同じ!
例外処理とは?
コードのタイプミスやらなんやらのおかげで、
一度くらいはエラーを起こしたことがあると思いますが(もしなかったとしても、きっとこの先にあるでしょう)
特にinput()を使うときなんか
数字だけだと言っているのにアルファベットを入力されたり、
エラーが起きやすいです
そういうときに重宝されるのが例外処理です
エラーについて、例外を変数に格納したり叱責を設定できます
例外処理の方法
例外処理は、tryブロックとexceptブロックで構成されます
tryブロックに処理を、expectブロックにエラーの場合行われる処理を書きます
>>> num = [1,2,3,4] >>> index = 7 >>> try: ..: print(num[index]) ..: except IndexError: ..: print('Error!') Error!
tryブロック
記述方法は以下の通り
>>> try:
..: 実行するコード
コードの内容はなんでも構いません
コンマを忘れないようにしてください
exceptブロック
このブロックは複数階層作ることが可能で、
処理は「elif」に似ています
最も単純なコードは下記の通りで
この処理は全てのエラーを拾います
>>> except:
..: エラーの時に実行されるコード
引数を設定し、特定のエラーを指定することもできます
>>> expect IndexError:
..: エラーの時に実行されるコード
上記のコードで引数として使われているIndexErrorは、
シーケンスに無効な位置を指定したときに返される例外型です
他にも色々あります
例外の保存
下記のようなコードで、
例外を任意の変数に代入し、保存することができます
except <i>exceptiontype</i> as <i>name</i>
exceptiontypeに例外の型を、
nameに変数名を記述します
先述したIndexErrorは、exceptiontypeの具体例の一つで、
Exceptionは全ての例外を表します
使い方は、for...asに近いものを感じます
>>> try: ..: print('1' + 4) >>> expect Exception as error: ..: print(error) can only concatenate str (not "int") to str
例外の内容が出力されました
数字と文字を同時に表示したから怒られたようですね
まとめ
適当にスプリクトモードで書いてみました
num = [1, 2, 3, 4, 5] #numリストを作成 while True: print('Please enter any number or q. ',\ 'Never enter anything else...OK?:') x = input() if x=='q': break #プログラムの終了コマンド try: index = int(x) #入力されたデータ型をint型に変換 print(num[index]) #numリストの値を表示する except IndexError: print('Bad index:', index) except Exception as other: print('エラーの原因:',other)
興味あったらコピペしてみてくださいねー