TypeError는 서로 호환되지 않는 타입의 객체를 결합하거나, 함수에 잘못된 타입의 객체를 인자로 전달할 때 발생하는 대표적인 파이썬 예외입니다.
TypeError가 발생하는 일반적인 경우
- 리스트와 문자열처럼 서로 다른 자료형을 연산자로 결합하려 할 때
- 숫자와 문자열을 더하려고 할 때
- 함수에 기대한 타입과 다른 객체를 전달했을 때
이러한 오류를 프로그램이 비정상적으로 종료되지 않도록 처리하려면 try-except 블록을 사용합니다. except TypeError as e 구문을 활용하면 발생한 예외 객체를 변수에 담아 오류 메시지와 예외의 타입까지 확인할 수 있습니다.
예제 코드
import sys
try:
ny = 'Statue of Liberty'
my_list = [3, 4, 5, 8, 9]
print(my_list + ny)
except TypeError as e:
print('오류 메시지:', e)
print('예외 타입:', type(e))
실행 결과
can only concatenate list (not "str") to list
<class 'TypeError'>
코드 설명
위 예제에서는 리스트(my_list)와 문자열(ny)을 + 연산자로 결합하려고 시도합니다. 리스트에는 리스트만 연결(concatenate)할 수 있기 때문에 파이썬은 TypeError를 발생시킵니다.
try블록 안에 오류가 발생할 가능성이 있는 코드를 작성합니다.- 오류가 발생하면 즉시
except TypeError블록으로 제어가 넘어갑니다. as e를 통해 예외 객체를 받으면e에 상세한 오류 메시지가 담겨 있어 디버깅에 유용합니다.type(e)를 호출하면 발생한 예외의 클래스인TypeError를 확인할 수 있습니다.
이처럼 try-except 구문으로 TypeError를 적절히 처리하면, 잘못된 입력이 들어와도 프로그램이 중단되지 않고 안정적으로 동작하도록 만들 수 있습니다.