Python Errorと異常処理


壊れた部分を知ってこそ修復できる方法!

Python Error



上図に示すように、Pythonを使用しているときに発生するエラーと処理方法について説明します.
코드를 입력하세요

1. SyntaxError

  • 構文エラー(引用符、括弧、コロン...)
  • のPythonバージョンは低く、最新バージョンの構文が実行できない場合があります.
  • 2. NameError

  • 参照変数がない
  • a, b = 10,5
    print(c) # c는 사용한적 없음

    3. ZeroDivisionError

  • 0分エラー
  • a = 10
    b = 0 # 영으로 나눌 수 없음.
    print(a/b)

    4. IndexError

  • インデックス範囲内でない
  • x = [10, 20, 30]
    print(x[3])

    5. KeyError

  • Key値(主にディック社が使用)
  • が見つかりません.
    dic = {'name':'hoon', 'color':'red'}
    print(dic['age']) # age라는 key 값이 존재하지 않음.
  • キーのエラーを回避するためにgetメソッドを使用します.
    ない場合はnone値をエラーではなく出力します.
  • 6. AttributeError

  • モジュールクラスの無効な属性を使用すると
  • が発生します.
    import random
    
    a = random.radin(0,10) # radint(o) 
    print(a)

    7. ValueError


    参照値
  • がないときに励起される
  • x = [1, 2, 3, 4, 5]
    print(x.index(10)) # 10은 x에 없는 값!

    8. FilenotFoundError


    外部ファイルが見つからない場合は、
  • が発生します.
    f = open('전화번호부.txt', 'r')
    # 정확한 경로와 파일명을 입력해야 한다.

    9. TypeError

  • データ型エラー
  • x = [3]
    
    y = (1,5)
    
    z = "팔"
    
    print(x+y+z) # 타입이 다르므로 에러 발생

    10. ConnectionError

  • サーバーが起動しない時に発生した、まだサーバーを使用していない場合、
  • を学ぶ必要がある.

    例外処理


    例外処理ポリシー


    EAFP

  • “It’s Easier to Ask Forgiveness than Permission”
  • 先に同意を得るより、後で許しを請うほうが簡単だ.
    エラー発生のすべてを予め設定するのではなく、異常が発生しないと仮定して符号化する.エラーが発生した場合は例外処理を行います
    いったん実行(try)すると、エラーが発生した場合、直ちに処理します(除外)
    Pythonが推奨する方法

    LBYL

  • "Look Before You Leap”
  • 石橋も叩いてから行きます.
    条件文(if)を使用して
  • を符号化し、コードを実行する前に発生する可能性のあるエラー条件を決定する.

    エラーが発生しました。


    前述したように、エラーが発生した場合、プログラムはその場所で終了し、以降のコードは実行されません.
    ユーザーが使用するプログラムがエラーで停止するのは大きな問題です.
    例外処理を使用して、エラーによるプログラムの終了または停止を防止します.
  • try:エラーが発生する可能性のあるコードの実行
    エラーが発生した場合、ポイント以降のコード
  • は実行されません.
  • を除く:エラー発生時(省略可能、複数利用可能、エラー処理必須)
  • else:エラーが発生していない場合は、実行(省略可能ですが、使用可能である必要があります)
  • finally:エラーが発生しても無条件実行(省略)
  • raise:必要に応じて
  • を使用
    class BigNumberError(Exception):
        pass
    class BigNumberError(Exception):
        def __init__(self, msg):
            self.msg = msg
        def __str__(self):
            return self.msg
        
    try:
        print("한 자리 숫자 전용 계산기입니다.")
        num1 = int(input("첫 번째 숫자를 입력하세요 : "))
        num2 = int(input("두 번째 숫자를 입력하세요 : "))
        if num1 >= 10 or num2 >= 10:
            # raise ValueError
            # raise BigNumberError
            raise BigNumberError("입력값 : {0}, {1}".format(num1, num2))
        print("{0} / {1} = {2}".format(num1, num2, int(num1/num2)))
    except ValueError:
        print("잘못된 값을 입력하셨습니다. 한 자리 숫자만 입력하세요")
    except BigNumberError as err:
        print("에러 발생. 한 자리 숫자만 입력하여 주세요.")
        print(err)
    finally:
        print("계산기를 이용해 주셔서 감사합니다.")
    今端末を運転しているので、エラーが発生しても怖くありません.そして問題点が分かり、修正しやすいのか…?