파이썬 시도 제외

이 문서에서는 python try except을 다루고 마지막으로 코드 예제를 사용하여 설명합니다.

파이썬의 예외



프로그램이 오류를 감지하면 Python은 많은 예외를 발생시킵니다(프로그램의 문제 발생). 특정 예외가 발생하면 Python 인터프리터는 현재 프로세스를 종료하고 exception is handled까지 호출자 프로세스에 컨트롤을 보냅니다. 이 작업을 수행하지 않으면 프로그램이 충돌합니다.

다음 프로그램을 고려하십시오. 함수 A는 함수 C를 호출하는 함수 B를 호출합니다. 함수 C에서 예외가 발생했지만 처리되지 않으면 예외가 B로 전송되고 이어서 A로 전송됩니다.

이 조건이 충족되지 않으면 오류 메시지가 표시되고 응용 프로그램이 예기치 않게 빠르게 종료됩니다.

예외 잡기



Python의 예외는 try statement.로 관리됩니다.
  • try 절에 예외를 일으킬 수 있는 중요한 작업이 포함되어 있습니다.
  • except 절에는 예외를 처리하는 코드가 포함되어 있습니다.
    예외를 포착하면 수행할 절차를 선택할 수 있습니다. 여기에 예가 있습니다.

  • # import module sys to get the type of exception 
    import sys 
    randomList = ['x', 0, 4] 
    for entry in randomList: try: 
    print("The entry is", entry) 
    r = 1/int(entry) 
    break 
    except: 
    print(sys.exc_info()[0], "occurred.") 
    print("Next entry.") 
    print() 
    print("The reciprocal of", entry, "is", r)
    


    산출:

    The entry is x 
    <class 'ValueError'> occurred. 
    Next entry. 
    The entry is 0 
    <class 'ZeroDivisionError'> occured. 
    Next entry. 
    The entry is 4 
    The reciprocal of 4 is 0.25
    


    이 프로그램에서는 randomList 목록의 값을 반복합니다. 앞에서 언급했듯이 예외를 생성할 수 있는 섹션은 try 블록 내에 포함됩니다. 예외가 발생하지 않으면 예외 블록을 건너뛰고 정상적인 흐름이 재개됩니다(마지막 값에 대해). 그러나 예외가 발생하면 except 블록(첫 번째 및 두 번째 값)에서 처리합니다.

    sys 모듈의 exc_info() function을 사용하여 예외 이름을 출력합니다. 그 결과 ValueError가 발생하고 ZeroDivisionError가 0이 되는 것을 볼 수 있습니다.

    Python의 모든 예외는 기본 Exception 클래스에서 상속되므로 다음과 같은 방법으로 위 작업을 수행할 수도 있습니다.

    # import module sys to get the type of exception 
    import sys 
    randomList = ['x', 0, 4] 
    for entry in randomList: 
    try: 
    print("The entry is", entry) 
    r = 1/int(entry) 
    break except Exception as e: 
    print(e.__class__, "occurred.") 
    print("Next entry.") 
    print() 
    print("The reciprocal of", entry, "is", r)
    


    이 프로그램은 위의 프로그램과 동일한 출력을 가집니다.

    Python에서 특정 예외 잡기



    위의 예에서는 except 절에 특별한 예외가 언급되지 않았습니다. 이것은 모든 예외를 포착하고 동일한 방식으로 각 인스턴스를 처리하기 때문에 나쁜 프로그래밍 기술입니다. catch할 예외를 except 절에 알려줄 수 있습니다.

    Atry clause는 다양한 예외를 처리하기 위해 무제한의 except 절을 포함할 수 있지만 예외가 발생하면 하나만 수행됩니다.

    except 절에서 튜플 값을 사용하여 몇 가지 예외를 선언할 수 있습니다. 다음은 시작하는 의사 코드입니다.

    try: 
    # do something 
    pass 
    except ValueError: 
    # handle ValueError exception 
    pass 
    except (TypeError, ZeroDivisionError): 
    # handle multiple exceptions 
    # TypeError and ZeroDivisionError 
    pass 
    except: 
    # handle all other exceptions pass
    

    좋은 웹페이지 즐겨찾기