しろちゃのプログラミング日記

プログラミング初心者が勉強したことを書き留めるブログ

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)

興味あったらコピペしてみてくださいねー

さいごに

ここまで読んで下さり、ありがとうございました!

参考文献の紹介記事を貼っておきますです

ai-shirocha.hatenablog.com