Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python에서 LookupError 예외를 잡는 방법 완벽 가이드

LookupError 예외란 무엇인가?

LookupError는 파이썬에서 무언가를 찾을 수 없을 때 발생하는 오류들의 기본(Base) 클래스입니다. 매핑(mapping)이나 시퀀스(sequence)에 사용된 키(key) 또는 인덱스(index)가 유효하지 않을 때 발생하는 예외들의 상위 클래스이며, 대표적인 하위 클래스로는 IndexErrorKeyError가 있습니다.

LookupError의 주요 하위 클래스

  • IndexError: 시퀀스(리스트, 튜플 등)의 참조 범위를 벗어났을 때 발생합니다.
  • KeyError: 딕셔너리에 존재하지 않는 키로 접근할 때 발생합니다.

예를 들어, 리스트에 존재하지 않는 인덱스에 접근하면 IndexError가 발생합니다. 아래 코드는 이러한 예외를 잡아내고(catch) 해당 예외의 타입을 확인하는 방법을 보여줍니다.

예제 코드

import sys

try:
    foo = ['a', 's', 'd', 'f', 'g']
    print(foo[5])
except IndexError as e:
    print(e)
    print(sys.exc_info()[0])

위 코드에서 리스트 foo는 인덱스 0부터 4까지만 존재하지만, 인덱스 5에 접근하려고 하므로 IndexError가 발생합니다.

실행 결과

list index out of range
<class 'IndexError'>

코드 설명

try 블록 안에서 리스트의 범위를 벗어난 인덱스에 접근하면, except IndexError as e 구문이 해당 예외를 잡아냅니다. 변수 e에는 오류 메시지가 담기며, sys.exc_info()[0]를 통해 발생한 예외의 타입을 확인할 수 있습니다.

또한 IndexError 대신 부모 클래스인 LookupError를 사용해도 동일하게 예외를 잡을 수 있습니다. 이렇게 하면 IndexErrorKeyError를 한 번에 처리할 수 있다는 장점이 있습니다.

try:
    foo = ['a', 's', 'd', 'f', 'g']
    print(foo[5])
except LookupError as e:
    print(f"예외 발생: {e}")

정리

LookupError는 잘못된 키나 인덱스 접근으로 인한 오류의 최상위 클래스이며, 이를 활용하면 다양한 조회(lookup) 관련 예외를 유연하게 처리할 수 있습니다. 실무에서는 더 구체적인 예외(IndexError, KeyError)를 개별적으로 처리하는 것이 디버깅에 유리하지만, 여러 조회 오류를 일괄 처리해야 할 때는 LookupError를 사용하는 것이 효과적입니다.