普通はエラーが起きないようにコーディングします。
しかし、予想外のエラーが発生した場合やすべてのケースを想定するのが無理な場合があります。
Pythonでのエラー対処方法(例外処理)についてメモします。
よくあるエラーとしてはゼロで割るというのがあります。
予想外のエラーということで、分母を乱数で取得するケースを考えます。
基本
import random
try:
n = random.randint(0, 3)
print(1 / n)
except ZeroDivisionError:
print("エラー")
try:
n = random.randint(0, 3)
print(1 / n)
except ZeroDivisionError:
print("エラー")
本来の処理を try に書きます。
エラーが発生した場合の処理を except に書きます。
ここでは例外名として ZeroDivisionError を指定しています。ゼロで割った場合はエラーという意味です。
すべてのエラーに対応
import random
try:
n = random.randint(0, 3)
print(1 / n)
except:
print("エラー")
try:
n = random.randint(0, 3)
print(1 / n)
except:
print("エラー")
except のところで例外名を指定しないとすべてのエラーに対応します。
どんなエラーが起きるか分からないがとりあえず処理を続けるというときに使えます。
一方でとりあえず処理を続けてしまうので本当にまずいことが起きていても気づかないことがあります。
成功するまで繰り返す
import random
for i in range(3):
try:
n = random.randint(0, 3)
print(1 / n)
break
except:
pass
for i in range(3):
try:
n = random.randint(0, 3)
print(1 / n)
break
except:
pass
上の例は成功するまで3回繰り返します。
try のところに処理を書きますが、最後に break でループを抜けています。成功したら処理を終えるということです。
except のところに pass と書いています。この場合、何もしません。文字通りパスするので、エラーの場合、次のループに入ります。
コメント