とまと あんらいぷ…

エンジニアの活動記録とかつぶやきとか

GitHub
スポンサードリンク

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

スポンサードリンク

Pythonの例外処理を知る

WindowsでPython シリーズ その20


Pythonの例外処理について学びます。
Pythonは予期せぬエラーが発生するとそこで処理が止まります。
それでは都合が悪いので、例外処理の定義をしていきます。

もちろん詳しくはマニュアルのエラーと例外を参考に!

例外の基本形




実行結果
Pythonの例外処理を知る

Pythonにおける例外の基本構文は「try: ~ except:」です。
whileで無限ループさせて、正しい入力が合った場合にbreakしてます。
サンプルコードでは3回処理をしました。

1回目は0除算
2回めは値を入れない
3回目でやっと答えを出しています。

これが例外の基本形。
ただ実際にはこんなコードは使えない。

例外の内容や詳細を知る


「try: ~ except:」は例外処理の基本形ですが、例外の内容が分からないし、何が悪いのかサッパリ。
というわけで、実用的なコードは例外処理の内容を知ることから始まります。



実行結果
Pythonの例外処理を知る

解説します。
except Exception as err:

例外を処理する時、except Exception as err: としています。
as err のerr部分は好きに定義できます。
この例では err に例外情報がセットされ、どんな例外タイプなのか、どのような例外内容なのかを知ることができます。

例外のelse: 句

try: 句のbreakを削除し、else:に breakと書いています。
else:は、try:で例外が発生しなかった時のみに実行されます。
よって、このコードでは例外が発生しない入力があった場合のみ、ループ処理を抜けるようにしています。

esle;句は正直いらないかもしれない。
だってtry:の最後に処理を書けば、実質例外が起こっていない証拠だから。

例外のfinally: 句

finally: は、例外があろうが無かろうが必ず実行されます。
よくある構文です。

実行結果の通り

1回目は0除算   → 0除算例外で再入力を促す
2回めは値を入れない → タイプ相違例外で再入力を促す
3回目でやっと答え

となってますね。

例外の種類ごとに処理を変える


例外機構のあるプログラム言語なので、当然ながら例外の種類によって後続の処理を変えることができます。
次の例では、発生した例外タイプ毎に処理を分けています。



実行結果
Pythonの例外処理を知る

例外の種類はコチラの組み込み例外を参考にしています。

捕まえている例外は以下の3通り。
ZeroDivisionError
ValueError
Exception

Exceptionだけは、全ての例外の基底のため、何があっても例外を補足します。
この例ではArithmeticErrorとなっています。

強制的に例外を発生させる raise キーワード

このコードで注目するべきは例外を発生させている
raise ArithmeticError("\r\n2はダメ\r\n")
です。
入力値「2」の場合、強制的に例外を発生させるコードを書いています。

またraiseキーワードで発生させる例外に引数を与えており、
引数で与えられた例外メッセージが、補足部分で出力されています。

例外処理のマスターは必須


例外処理が最も活躍するのは、PythonがPythonに関係ない何かを操作する時です。

例えばファイルを操作する時とか、インターネットから情報を取ってくる時とか。
ファイルが無かったらエラーになるし、インターネット接続が突然切れてもエラーになります。

そんな時にいちいち処理を止めるのではなく、例外を正しく処理できればより安定したアプリを作ることができます。

例外処理とセットで覚えるキーワードにwithがありますがこれはまた今度で。
Pythonの構文はこの第20回でおしまいです。

あとは実例とともにちょこちょこ紹介していければいいなと考えています。
それでは!
▼この記事を読んだ方は、こんな記事も読んでいます。▼

スポンサードリンク

テーマ:プログラミング - ジャンル:コンピュータ

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://dalmore.blog7.fc2.com/tb.php/180-eabbc125
この記事にトラックバックする(FC2ブログユーザー)

FC2Ad

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。