프로그래밍을 하다 보면 예외 상황을 처리하는 것이 매우 중요합니다. Python에서는 raise 문을 사용해 직접 예외를 발생시킬 수 있고, 그중 KeyError는 딕셔너리나 데이터프레임에서 존재하지 않는 키나 컬럼을 접근하려 할 때 자주 발생합니다.
이번 글에서는 raise와 KeyError가 어떤 역할을 하는지, 그리고 어떻게 활용할 수 있는지를 간단한 예제와 함께 소개합니다.
raise란?
raise는 프로그래머가 의도적으로 예외를 발생시키는 문법입니다. 조건에 맞지 않거나 잘못된 값이 들어왔을 때, 프로그램의 흐름을 멈추고 예외 메시지를 던질 수 있습니다.
if age < 0:
raise ValueError("나이는 음수가 될 수 없습니다.")
KeyError란?
KeyError는 존재하지 않는 키(또는 컬럼)를 딕셔너리나 판다스 데이터프레임에서 접근하려고 할 때 발생하는 오류입니다.
my_dict = {"name": "Jihyo"}
print(my_dict["age"]) # KeyError: 'age'
위 예제에서는 my_dict 안에 "age"라는 키가 없기 때문에 KeyError가 발생합니다.
raise와 KeyError를 함께 사용하는 예
직접 예외를 발생시키는 것도 가능합니다. 예를 들어, 어떤 컬럼이 데이터프레임에 존재하지 않으면 에러를 발생시키고 싶을 때 이렇게 사용할 수 있습니다:
import pandas as pd
def set_label_column(column, sample_data=None):
if (isinstance(sample_data, pd.DataFrame) and (column not in sample_data)) or (not column):
raise KeyError(f"'{column}' 컬럼이 데이터에 없습니다.")
else:
print(f"'{column}' 컬럼을 레이블로 설정했습니다.")
사용 예시:
df = pd.DataFrame({
"name": ["A", "B"],
"score": [80, 90]
})
set_label_column("grade", df)
# KeyError: 'grade' 컬럼이 데이터에 없습니다.
정리
마무리 팁
- 사용자에게 명확한 에러 메시지를 전달하는 것은 디버깅과 유지보수에서 큰 도움이 됩니다.
- 데이터 컬럼명을 다루는 경우, 항상 존재 여부를 먼저 확인하고 예외 처리로 방어 코드를 작성하는 것이 좋습니다.
'파이썬 > 기초 프로그래밍' 카테고리의 다른 글
네임 맹글링(Name Mangling)이란? (0) | 2025.06.06 |
---|---|
디버깅이란? (0) | 2025.06.06 |
Python 함수에서 ... (Ellipsis)의 의미는? (0) | 2025.05.14 |
_wrapfunc()는 NumPy 내부에서 정의한 유틸리티 함수 (0) | 2025.03.27 |
NumPy의 _wrapfunc()는 뭘 할까? — np.round()의 진짜 동작 방식 (0) | 2025.03.27 |