raise文を使うと、指定した例外を起こすことができます。
意図的にエラーを起こすことができます。
以下は、意図的にNameErrorを起こします。
raise NameError, ‘HiThere’ または raise NameError(‘HiThere’)
第1引数には、ひき起こすべき例外を指定し、第2引数ではその例外の引数を指定します。
下記は、hoge関数にて、エラー発生した時に「raise」を記述しているので、それが呼び出し元であるcall関数にも伝わり、「エラーを受け取りました」が表示されます。
「raise」を記述sいないとcall関数のexcept配下の処理が実行されない。
例題1
def hoge(val1,val2):
result = 0
try:
result = val1 + val2
except:
print("計算失敗")
raise
finally:
print("計算終了")
return result
def call(list1,list2):
try:
print(hoge(list1[0],list2[0]))
print(hoge(list1[1],list2[1]))
print(hoge(list1[2],list2[2]))
except:
print("エラーを受け取りました")
if __name__ == "__main__":
list1 = [100,200,300]
list2 = [100,200,"300"] #---300が数値でなく文字列---
call(list1,list2)
出力結果
計算終了
200計算終了
400計算失敗!
計算終了
エラーを受け取りましたよ
「raise」を実行すれば、エラー情報が出力され処理が止まる。
なので「raise」を「print(“計算失敗”)」の前に記述すればそこで処理は終了するので
「計算失敗」は表示されない。
計算終了
200計算終了
400計算終了
エラーを受け取りましたよ
例題2
def hoge(val1,val2):
result = 0
try:
result = val1 + val2
raise
except:
print('エラー')
return result
print(hoge(2, 2))
出力結果
エラー
4