概要
Pythonの学習をしています。例外処理について役に立ちそうな記載をまとめます。
例外処理の書き方
# coding: utf-8
print(1)
#例外を検出する処理
try:
number = 0
answer = 100 / number
print(answer)
#tryブロックで中断した場合の処理
except ZeroDivisionError as e:
print(e)
#例外にかかわらず実行する処理
finally:
print(2)
例外処理時にスタックトレースの表示
# coding: utf-8
import traceback, sys
print("start")
try:
number = 0
answer = 100 / number
print(answer)
except ZeroDivisionError as e:
print(e)
print("0では割り算できません")
#スタックトレースを表示
print(traceback.format_exc())
#実行時エラータブに情報を表示
sys.stderr.write(traceback.format_exc())
finally:
print("end")
NameErrorの例外を検出する
# coding: utf-8
print("start")
try:
number = 1
answer = 100 / number
print(answer2)
except NameError as e:
print("未定義の変数を呼び出しています")
print(e)
finally:
print("end")
種類を問わず例外を検出する
# coding: utf-8
print("start")
try:
number = "a"
answer = 100 / number
print(answer2)
except Exception as e:
print("予期せぬエラーが発生しました")
print(e)
finally:
print("end")
raiseで意図的に例外を発生させる
# coding: utf-8
print("start")
try:
raise Exception("意図的な例外")
except Exception as e:
print("予期せぬエラーが発生しました")
print(e)
finally:
print("end")
raiseで予備元に例外を伝える
# coding: utf-8
def test_exception(number):
try:
answer = 100 / number
return answer
except ZeroDivisionError as e:
#例外を発生させて関数の予備元に伝える
raise e
print("start")
try:
answer = test_exception(0)
except ZeroDivisionError as e:
print(e)
finally:
print("end")
0 件のコメント:
コメントを投稿