for i in range(5):
print(5/i)
実行結果
---------------------------------------------------------------------------
ZeroDivisionError Traceback (most recent call last)
Cell In[6], line 2
1 for i in range(5):
----> 2 print(5/i)
ZeroDivisionError: division by zero
for i in range(5):
try:
print(5/i)
except:
print("division by zero")
実行結果
division by zero
5.0
2.5
1.6666666666666667
1.25
しかしこのままではどんな例外が起こっても止まらずに処理が続けられてしまします。
そこで使うのが強制的に例外を発生させる「raise」です。
except文の後にraiseを書くと、そこで例外が発生し、プログラムがストップします。
for i in range(5):
try:
print(5/i)
except:
print("division by zero")
raise
実行結果
division by zero
---------------------------------------------------------------------------
ZeroDivisionError Traceback (most recent call last)
Cell In[10], line 3
1 for i in range(5):
2 try:
----> 3 print(5/i)
4 except:
5 print("division by zero")
ZeroDivisionError: division by zero
def print_val(val):
if val != 0:
print(5/i)
elif val == 0:
raise ValueError("Do not divide by zero")
for i in range(5):
try:
print_val(i)
except ValueError as e:
print(f"エラーが発生しました: {e}")
実行結果
エラーが発生しました: Do not divide by zero
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
Cell In[16], line 9
7 for i in range(5):
8 try:
----> 9 print_val(i)
10 except ValueError as e:
11 print(f"エラーが発生しました: {e}")
Cell In[16], line 5, in print_val(val)
3 print(5/i)
4 elif val == 0:
----> 5 raise ValueError("Do not divide by zero")
ValueError: Do not divide by zero
コメント