文系プログラマの雑記

文系プログラマの考え、プログラミングの紹介

【Python・例外処理】~raise②~

f:id:ShotaNukumizu_1000:20210405111435p:plain

おはようございます!Shotaです。

今日も早速、Pythonに関する記事を書いていきます。今日も引き続き「raise」について解説していきます。テンポよく、今日も短めに書いていきます。

 

【目次】

 

 

例外を新しく作ってraise

exceptで受け止めた例外とは別の例外をraiseできます。このような場合は、新しく例外を作成してraiseします。

 

raise 例外名

 

このようにして、raiseの後に例外名を指定して呼び出せばその例外を選出します。これを実際にコーディングして試してみましょう。以下のような例外が発生します。

 

#例外をraise
l = input('文字を入力:')
if l == '':
    raise TypeError('文字が入力されていません。')
else:
    print(f'入力した文字:{l}')

 

 ▼実行結果

文字を入力:
Traceback (most recent call last): File "sample.py", line 4, in <module> raise TypeError('文字が入力されていません。') TypeError: 文字が入力されていません。

 

 これは、「TypeError」という例外を発生させています。入力値によるエラーです。ここでは、入力された値が何もなければ「TypeError」を発生させています。

 

raise TypeError('文字が入力されていません。')

 

このように書くことで「TypeError」を意図的に発生させることができるのです。 

 

万が一、別の名前としてコーディングしてみましょう。さっきのプログラムで発生する例外を「EnterError」と指定するとどうなるのでしょうか?

試しにコードを書いて試してみましょう。

 

l = input('文字を入力:')
if l == '':
    raise EnterError('文字が入力されていません。')
else:
    print(f'入力した文字:{l}')

 

これで何も文字を書かずに出力してみます。

 

▼実行結果 

文字を入力:
Traceback (most recent call last):
  File "sample.py", line 4, in <module>
    raise EnterError('文字が入力されていません。')
NameError: name 'EnterError' is not defined

 

この場合、「EnterError」がプログラム上で定義されていないので「NameError」が発生しています。raiseで例外名を記述していますが、その例外名がプログラム上にないと「NameError」として出力されます。

このように独自で例外名を指定するプログラムを作成するのは、また後日の記事にて紹介していきます。

 

まとめ

【本日のまとめ】

  • raiseに例外クラスのインスタンスを渡すと、新しく例外が発生する。ただし、raiseをただ単にプログラム上に書くだけでは自分の独自の例外名を出力することができない。

 

 

本ブログでは、こんな感じでPythonにまつわる情報や基本的な知識、Pythonの操作方法やニュースをたくさん紹介していきます。毎週日曜日に、普段とは趣向を変えて有名な自己啓発本・ビジネス書を要約・考察するブログを書いていきます。

この記事がいいと思った人はSNSにシェアしてくれると非常に嬉しいです!

明日は日曜日なので、本の要約・解説をしていきます。明日紹介する本は『FIRE 最速で経済的自由を達成する方法』です。

今日も最後まで読んでくださりありがとうございました!

 

【参考図書】

gihyo.jp