Python의 중첩된 try...except 문

Vaibhav Vaibhav 2022년1월22일
Python의 중첩된 try...except 문

try...except 문은 Python에서 예외를 포착하거나 오류가 발생하기 쉬운 일부 코드를 실행하는 데 사용됩니다. 요즘은 모든 프로그래밍 언어에 이 기능이 있지만 Python에서는 이 단어로 표시되며 각각 try...except 키워드로 표시됩니다. try...except 외에도 finally라는 또 다른 키워드도 함께 사용할 수 있습니다.

for 루프와 마찬가지로 이러한 try, catchfinally 문도 중첩될 수 있으며 이 기사에서는 이에 대해 설명합니다.

Python의 중첩된 try...except

위에서 언급했듯이 for 루프를 중첩하는 것과 같은 방식으로 이러한 명령문을 중첩할 수 있습니다. 예제는 다음 코드를 참조하십시오.

a = {"a": 5, "b": 25, "c": 125}

try:
    print(a["d"])
except KeyError:
    try:
        print("a:", a["a"])
    except:
        print("No value exists for keys 'a' and 'd'")
    finally:
        print("Nested finally")
finally:
    print("Finally")

출력:

a: 5
Nested finally
Finally

보시다시피, 위의 프로그램은 먼저 일부 키-값 쌍으로 사전을 초기화한 다음 d 키의 값에 액세스하려고 시도합니다. 키-값 쌍이 존재하지 않기 때문에 KeyError 예외가 발생하고 except 문에 의해 catch됩니다. 그런 다음 인터프리터는 중첩된 try 블록 아래에서 코드를 실행합니다. a 키에 대한 값이 존재하므로 콘솔에 출력되고 중첩된 finally 문 아래의 코드가 실행됩니다. 마지막으로 외부 finally 문 아래에 있는 코드가 실행됩니다.

이는 try, catchfinally 명령문 아래에 try, catchfinally 명령문을 넣을 수 있음을 의미합니다. 예를 들어 이것을 이해합시다. try, catch, finally 문이 포함된 코드를 작성하고 이 모든 명령문에도 try, catchfinally 문이 있습니다.

a = {
    "a": 5,
    "b": 25,
    "c": 125,
    "e": 625,
    "f": 3125,
}

try:
    try:
        print("d:", a["d"])
    except:
        print("a:", a["a"])
    finally:
        print("First nested finally")
except KeyError:
    try:
        print("b:", a["b"])
    except:
        print("No value exists for keys 'b' and 'd'")
    finally:
        print("Second nested finally")
finally:
    try:
        print("c:", a["c"])
    except:
        print("No value exists for key 'c'")
    finally:
        print("Third nested finally")

출력:

a: 5
First nested finally
c: 125
Third nested finally

보시다시피, 먼저 외부 try 블록이 실행됩니다. d 키에 대한 값이 발견되지 않았기 때문에 중첩된 except 문 아래의 코드가 실행되고 중첩된 finally가 실행됩니다. 외부 try 블록은 실행 중에 예외가 발생하지 않았으므로 except 블록을 건너뛰고 외부 finally 블록 아래의 코드가 실행됩니다.

우리는 원하는 만큼 더 나아가 n 레벨의 중첩된 try, catch, finally 문을 생성할 수도 있습니다. 그러나 중첩된 수준의 수가 증가함에 따라 제어 흐름 또는 실행 흐름이 약간 복잡해지고 관리하기 어려워집니다. try, catchfinally 문을 탐색하는 것이 어려워집니다.

Vaibhav Vaibhav avatar Vaibhav Vaibhav avatar

Vaibhav is an artificial intelligence and cloud computing stan. He likes to build end-to-end full-stack web and mobile applications. Besides computer science and technology, he loves playing cricket and badminton, going on bike rides, and doodling.

관련 문장 - Python Statement