はじめに
最近、Pythonを始めまして、学んだ基本文法を簡単にですがまとめていきます。
具体的に本記事では、例外処理(try文、exption、finally)の扱い方をまとめていきます。
注意:Python公式サイトに正式なチュートリアルもあるようですので、詳しいことは下記リンクをご確認下さい。
まだPythonの開発環境が整っていない方

Python3 基本文法 (try 、except 、finally)
処理を実行した時に、結果がエラーとなったしまう場合があるかと思います。しかし、そこで実行結果によって事前にエラーが予測できる場合に例外処理を記載しておくことで、対処方法をあらかじめ用意しておくことができます。
# 基本文法
try :
# 例外が発生する可能性がある処理
except :
# 例外を受けて実行する処理
例外処理( try 、 except )
よく起こりそうな変数のキャスト忘れによるエラー(ValueError)を例題として、説明してきたいと思います。
処理の概要
数字を入力を求めて、数字であれば数字を返す。
数字以外であれば、エラーが発生し、例外処理を実行する。
キャストを気にせず記述すると、、、文字列を入れた時にエラー発生!
while True :
num = input("数字を入力してください(quitで終了):")
if num == "quit" :
print("END")
break
result = 1 * int(num) # エラー発生箇所
print(result)
>>> 入力値が「1」の場合 :1
>>> 入力値が「number」の場合:
Traceback (most recent call last):
File "sample.py", line 6, in <module>
result = 1 * int(num) # エラー発生箇所
ValueError: invalid literal for int() with base 10: 'number'
キャスト忘れによるValueErrorが発生しました。
このエラーが起きた時に例外処理を実行できるように記述し直してみましょう。
例外処理イメージ

サンプルコード
while True :
num = input("数字を入力してください(quitで終了):")
if num == "quit" :
print("END")
break
try :
result = 1 * int(num) # エラー発生箇所
print(result)
except ValueError:
print("エラー発生/数字を入れてください")
>>> 入力値が「1」の場合 :1
>>> 入力値が「number」の場合:エラー発生/数字を入れてください
このようにシステムエラーを出すのではなく、対処方法として適切なエラーメッセージを出すことができました。
例外処理( finally )
例外処理の記述方法として、「finally」という書き方もあります。
利用想定としては、システムエラーが発生しても、しなくても必ず流したい処理がある場合に利用したりします。
while True :
num = input("数字を入力してください(quitで終了):")
if num == "quit" :
print("END")
break
try :
result = 1 * int(num) # エラー発生箇所
print(result)
except ValueError:
print("エラー発生/数字を入れてください")
finally :
print("処理終了")
>>> 入力値が「1」の場合 :
1
処理終了
>>> 入力値が「number」の場合:
エラー発生/数字を入れてください
処理終了
例外一覧 ※下記リンクから抜粋
よく起きるであろう例外処理をまとめておきましたので、参考程度にご確認下さい。
Exception | システム終了以外の全ての組み込み例外はこのクラスから派生しています。全てのユーザ定義例外もこのクラスから派生させるべきです。 |
IndexError | シーケンスの添字が範囲外の場合に送出されます。 |
KeyError | マッピング (辞書) のキーが、既存のキーの集合内に見つからなかった場合に送出されます。 |
NameError | ローカルまたはグローバルの名前が見つからなかった場合に送出されます。 |
SyntaxError | パーザが構文エラーに遭遇した場合に送出されます。 |
TabError | タブとスペースを一貫しない方法でインデントに使っているときに送出されます。 |
SystemError | インタプリタが内部エラーを発見したが、状況は全ての望みを棄てさせるほど深刻ではないと思われる場合に送出されます。 |
TypeError | 組み込み演算または関数が適切でない型のオブジェクトに対して適用された際に送出されます。関連値は型の不整合に関して詳細を述べた文字列です。 |
参考にしている書籍
まとめ
本記事では、例外処理(try文、exption、finally)の扱い方をまとめてみました。
例外が発生した際には、そこで処理が止まってしまうため個人的には、強制的にプログラムを終了させるのではなく、意図した形で処理を終えられるよう例外処理の記載をしておくことが良いと考えています。初歩的な例題でしたが、少しでも参考になっていましたら嬉しいです。