Pythonの例外処理のサンプルです。try ... except文とraise文を使用します。(確認環境:Python 3)
目次
例外処理 | try...except文 |
raise文 | |
独自の例外を作成する |
try...except文
try: 処理 except 例外クラス名 [as 変数名]: 処理 else: 処理 |
- tryの処理で例外が発生した場合、exceptの例外処理が実行されます。
- 例外クラス名は、キャッチする例外を記述します。
- exceptの最後にあるas 変数名は省略可能です。
- elseは例外が発生しなかったときに実行されます。
- 以下はPythonの公式ドキュメントの「8.3. 例外を処理する」のリンクです。
https://docs.python.org/ja/3/tutorial/errors.html#handling-exceptions
try...except文のサンプルです。
# coding: utf-8
try:
a = 100/0
except Exception:
print("エラーです") #エラーです
else:
print("終了")
4行目は数値を0で割るのでエラーになります。
5行目は、エラーをキャッチし6行目の文言を表示ます。
8行目の文言は表示されません。
try...except...finally文
try: 処理 except 例外クラス名 [as 変数名]: 処理 finally: 処理 |
- finallyは、エラーがなくてもあっても必ず実行されます。
# coding: utf-8
try:
a = 100/0
except Exception:
print("エラーです") #エラーです
finally:
print("終了") #終了
7行目は、finallyでエラーが発生しても8行目は実行されます。
raise文
raise 例外クラス名(引数の値) |
- 意図的に例外を発生させることができます。
- try...except文でキャッチできます。
- 以下は、Pythonの公式ドキュメントの「8.4. 例外を送出する」のリンクです。
https://docs.python.org/ja/3/tutorial/errors.html#raising-exceptions
raise文のサンプルです。
# coding: utf-8
try:
a = 100/10
raise Exception('例外のテスト')
except Exception as e:
print(e) # 例外のテスト
5行目は、raise文で強制的に例外を発生させています。
7行目のexceptでキャッチし、8行目は5行目の引数の値を表示します。
raise文の引数が2つあるサンプルです。
try:
a = 100/10
raise Exception('例外のテスト','err1')
except Exception as e:
print(e) # ('例外のテスト','err1')
3行目は、引数が2つあります。引数は任意の数を指定できます。
6行目は、タプルで3行目の引数の値が表示されます。
独自の例外を作成する
独自の例外を作成するには、Exceptionクラスを継承します。
# coding: utf-8
class TestException(Exception):
pass
def calc1(a):
if a == 0:
raise TestException('独自例外')
return
a = 0
try:
calc1(a)
except TestException as e:
print(e) # 独自例外
finally:
pass
3行目で、Exceptionクラスを継承して独自の例外を作成しています。
8行目は、独自のエラーをraiseしています。
15行目でcatchされ「独自例外」と表示されます。
関連の記事
Python タプルの仕組みと使い方のサンプル(tuple)
Python 関数のサンプル
Python ローカル変数とグローバル変数