(最終更新月:2021年12月)
✓当記事はこんな方に向けて書かれております
「Python try文の使い方がわからない!」
「例外についても詳しく知りたい!」
「そもそも例外処理って必要なの??」
✓当記事の内容はこちらです
- Python try文 例外処理の書き方|基本を徹底に解説
- 主な例外 7種をまとめました
- 例外処理を使う便利な場面 3選
つまり、当記事をお読みいただくことで、Pythonの例外処理について基本はすべて網羅できます
Python try文 例外処理の書き方|基本を徹底的に解説

構造
try文は下記の構造となっています
try:
行いたい処理
except:
エラーが発生した場合の処理
exceptで特定のエラーに限定することも可能です
try:
行いたい処理
except エラー名 as 変数:
エラーが発生した場合の処理
実例を見ていきましょう
実例
関数で数字を2つ受け取り、割り算をしていきます
def divide2numbers(a,b):
try:
print(a/b)
except ZeroDivisionError as zero_e:
print("ゼロで割ることはできません:", zero_e)
except TypeError as type_e:
print("正しい値を入力してください:", type_e)
解説
try以下の「print(a/b)」が行いたい処理のコードです
エラーを2つ指定してます
- ZeroDivisionError
- TypeError
ZeroDivisionErrorはゼロで割ってしまった場合に起こるエラーです
TypeErrorはint型以外が引数に代入された場合起こります
基本的な使い方は、以上ですが、「else」「finally」についても知っておくと便利です
else, finally
try:
行いたい処理
except:
エラーが発生した場合の処理
else:
try文がエラーなく終了した場合のみ実行
finally:
エラーの有無に関わらず実行
else, finallyの実例
def divide2numbers(a,b):
try:
print(a/b)
except ZeroDivisionError as zero_e:
print("ゼロで割ることはできません:", zero_e)
except TypeError as type_e:
print("正しい値を入力してください:", type_e)
else:
print("エラーはありませんでした")
finally:
print("プログラム終了")
解説
エラー発生がなく、正常に終了した場合、
>>> divide2numbers(6,3)
2.0
エラーはありませんでした
プログラム終了
「else」も「finally」もすべて実行されます
エラーが発生した場合、
>>> divide2numbers(6, "3")
正しい値を入力してください: unsupported operand type(s) for /: 'int' and 'str'
プログラム終了
「else」は実行されず、finallyのみ実行されました
主な例外 7種をまとめました
try文を作成する場合、「どんな例外があるか」をおさえておくととても便利です
下記の7つは完璧に覚える必要はありませんが、「こんなのあるんだ!」程度に知っておきましょう
ValueError
予期している値と違う場合に発生するエラーです
【例】
>>> float("three")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: could not convert string to float: 'three'
TypeError
予期している型と違う場合に発生するエラーです
【例】
>>> 3 + "4"
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for +: 'int' and 'str'
AttributeError
指定した属性が存在しない場合に発生するエラーです
【例】
>>> num = 3
>>> num.lower()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'int' object has no attribute 'lower'
NameError
存在しない変数などを指定した場合などに発生するエラーです
【例】
>>> test
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'test' is not defined
ZeroDivisionError
割り算の際にゼロで割ってしまった場合に発生するエラーです
【例】
>>> 5/0
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ZeroDivisionError: division by zero
IndexError
リストなどのオフセットを存在しない値で指定した場合などに発生するエラーです
【例】
>>> num_list = [1,2,3]
>>> num_list[4]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: list index out of range
KeyError
辞書型のオブジェクトで存在しないキーで値を取り出した場合に発生するエラーです
【例】
>>> article = {"pk": 1, "title":"Pythonとは?"}
>>> article["content"]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'content'
例外処理を使う便利な場面 3選

エラー処理は下記のような場面で使用するととても便利です
引数を受け取る関数を使用している場合
関数内でエラーが発生すると、プログラム全体が強制的にストップしてしまいます
try文でプログラム全体のフリーズを防止できます
エラー回避のためにif文をいくつも記述している場合
try文はエラーの種類ごとの記述で済ませることができます
if文で起こりうるエラー全ての条件分岐を記述するのはコードが膨大になってしまう可能性がありますので、できるだけ避けましょう
比較的大きなプロジェクトの場合
エラー発生がその後の処理にも影響してしまうので、エラー発生の可能性がある場合はtry文を使っておきましょう
まとめ
以上でPythonのtry文について基本を解説してきました
当記事をまとめていきます
【try文の構成】
try:
行いたい処理
except:
エラーが発生した場合の処理
else:
try文がエラーなく終了した場合のみ実行
finally:
エラーの有無に関わらず実行
ただし、「else」「finally」は不要な場合は割愛可能です
例外は様々なものがありますが、主に出くわすであろう7つご紹介しました
- ValueError
- TypeError
- AttributeError
- NameError
- ZeroDivisionError
- IndexError
- KeyError
すべて覚えておく必要はありませんが、頭の片隅に入れておくといざという時に便利です
こんなtry文は下記の時に使うと効果を発揮します
- 引数を受け取る関数を使用している場合
- エラー回避のためにif文をいくつも記述している場合
- 比較的大きなプロジェクトの場合
当記事をきっかけに使いこなして頂ければ幸いです