2020年10月10日土曜日

Python学習 例外処理

概要

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 件のコメント:

コメントを投稿