KeyError란 무엇인가?
KeyError는 파이썬에서 딕셔너리(dictionary)에 존재하지 않는 키(key)로 값을 조회하려고 할 때 발생하는 예외입니다. 예를 들어, 딕셔너리에 'c'라는 키가 없는데 d['c']처럼 접근하면 프로그램이 비정상적으로 종료되지 않도록 이 예외를 적절히 처리해야 합니다.
아래 코드는 try-except 문을 사용해 예외를 잡고, sys.exc_info() 함수를 통해 발생한 예외의 타입과 정보를 확인하는 방법을 보여줍니다.
예제 코드
import sys
try:
s = {'a':5, 'b':7}['c']
except:
print(sys.exc_info())실행 결과
(<type 'exceptions.KeyError'>, KeyError('c',), <traceback object at 0x0000000003203748>)출력 결과를 보면 첫 번째 요소는 발생한 예외의 타입(exceptions.KeyError), 두 번째 요소는 실제 예외 객체(누락된 키 'c' 정보 포함), 세 번째 요소는 traceback 객체임을 알 수 있습니다.
더 나은 방법: 특정 예외만 잡기
위 예제처럼 막연히 except:를 사용하면 KeyError뿐 아니라 모든 종류의 오류까지 함께 잡아버려 디버깅이 어려워질 수 있습니다. 따라서 실무에서는 다음과 같이 예외 타입을 명시하고 예외 객체를 변수로 받아 활용하는 것이 좋습니다.
try:
s = {'a':5, 'b':7}['c']
except KeyError as e:
print(f"키 '{e}'가 딕셔너리에 존재하지 않습니다.")이렇게 하면 KeyError가 발생했을 때만 처리 로직이 실행되며, 누락된 키의 이름까지 손쉽게 확인할 수 있어 더 안전하고 가독성 높은 코드를 작성할 수 있습니다.