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

파이썬에서 IndexError 예외를 처리하는 방법

IndexError는 리스트나 튜플과 같은 시퀀스 자료형에서 유효 범위를 벗어난 인덱스에 접근하려고 할 때 발생하는 예외입니다. 예를 들어 요소가 5개뿐인 리스트의 여섯 번째 항목에 접근하면 이 오류가 발생합니다.

이러한 예외는 try-except 문을 사용하면 프로그램이 비정상적으로 종료되지 않도록 안전하게 처리할 수 있으며, 예외 객체를 통해 오류 메시지와 예외 타입까지 확인할 수 있습니다.

예제 코드

import sys

try:
    my_list = [3, 7, 9, 4, 6]
    print(my_list[6])   # 존재하지 않는 인덱스에 접근
except IndexError as e:
    print("발생한 예외:", e)
    print("예외 타입:", type(e).__name__)

실행 결과

발생한 예외: list index out of range
예외 타입: IndexError

리스트 my_list의 유효한 인덱스는 0부터 4까지이므로, 인덱스 6에 접근하는 순간 IndexError가 발생하고 except 블록이 이를 잡아냅니다. 이처럼 as e 구문을 사용하면 예외 객체를 변수에 담아 상세 정보를 확인할 수 있습니다.

IndexError를 예방하는 팁

  • 길이 확인하기: 인덱스에 접근하기 전에 len(my_list)로 리스트의 길이를 먼저 확인하면 범위 초과 오류를 미리 방지할 수 있습니다.
  • 음수 인덱스 활용: 파이썬에서는 -1이 마지막 요소를 가리키므로, 마지막 항목에 접근할 때 유용합니다.
  • 반복문 사용: 인덱스를 직접 지정하는 대신 for item in my_list:처럼 요소를 순회하면 IndexError 발생 가능성 자체를 없앨 수 있습니다.

참고로 위 예제는 현재 표준인 파이썬 3 문법(print() 함수, type(e).__name__)으로 작성되었습니다. 구버전 파이썬 2에서는 print esys.exc_type을 사용했지만, 파이썬 2는 이미 지원이 종료되었으므로 파이썬 3 방식을 사용하는 것이 좋습니다.