おいっす。豚野郎です。
Pythonの変数・配列・クラスの説明は書いてきたので、
最後に例外処理の記事を書けば言語としての基礎は全て書いたことになるのかなと思います。
そのため今回は、基礎としては最後として「例外処理」について書いていきます。
※ 注意:内容はPHPか何かの言語を書いたことがある方向けなので、
説明を割愛している箇所は多々ありますので、ご了承ください。
バージョン:3.9.1
【過去の記事】
■ PHPerが学ぶPython① 変数・配列・タプル
■ PHPerが学ぶPython② クラス
1. 実行時の例外
以下が発行する例外の種類です。
①. NameError:変数定義されていない時
②. ZeroDivisionError:0で割り算を行った時
③. TypeError:数値と文字列等、型が異なる値を計算しようとした時
④. ValueError:文字列を整数に変換しようとした時、変換対象の文字列が数字ではない等、型が不適切な時
例として、①を試してみます。
try:
print(test)
except NameError:
print('変数が定義されていません')
$ python exception.py
変数が定義されていません
例外は、複数記載することが可能です。
try:
test = 'テスト'
test += 1
except (NameError, TypeError):
print('今回はTypeError')
$ python exception.py
今回はTypeError
その他のエラー・エラーがない時・エラーがあっても無くても実行したい場合は以下の様に記載します。
try:
test = 1
test += 1
except (NameError, TypeError):
print('今回はTypeError')
except Exception:
print('その他のエラー')
else:
print('エラーなし')
finally:
print('エラーがあっても無くても表示')
$ python exception.py
エラーなし
エラーがあっても無くても表示
2. 特定のタイミングで例外発生
以下ではValueErrorの例外を発生させます。
raise ValueError
$ python exception.py
Traceback (most recent call last):
File "パス/exception.py", line 1, in <module>
raise ValueError
ValueError
エラーメッセージを表示させたい時は、以下の記載をします。
try:
raise ValueError('変数定義')
except ValueError as msg:
print(msg, 'のエラー')
$ python exception.py
変数定義 のエラー
※ 必ずmsgにしなければならないわけではないです。
3. 自分で例外を作る時
# Exceptionクラスを継承する
class SampleError(Exception):
message = 'エラーを発生させています'
error_message = SampleError.message
try:
raise SampleError
except SampleError:
print(error_message)
$ python exception.py
エラーを発生させています
特別な処理を行わない場合、passと記載します。
class SampleError(Exception):
# 特別な処理を行わない場合
pass
try:
raise SampleError
except SampleError:
print('エラーを発生させています')
$ python exception.py
エラーを発生させています
感想
例外も終えたので、基礎はこれでOKかなと思います。