본문 바로가기

[Python] 파이썬 'try' - 'except' 구문 기본구조 설명 및 예외 타입, 예시 적용 방법

액트 2023. 10. 27.

소개

파이썬의 try-except 구문은 예외 처리를 위해 사용됩니다. 프로그램이 실행되는 도중에 예외(오류)가 발생할 경우, 이를 적절히 처리하여 프로그램의 비정상 종료를 막거나, 사용자에게 오류에 대한 정보를 제공하는 등의 작업을 수행할 수 있습니다. 또한 예외 처리를 할 때, 다양한 예외 타입들을 특정하여 처리할 수 있습니다. 각 예외 타입은 발생할 수 있는 오류 상황에 따라 정의되어 있습니다.

기본 구조

try:
    # 오류가 발생할 가능성이 있는 코드
except 예외타입:
    # 오류가 발생했을 때 수행할 코드

상세한 구조

try:
    # 오류가 발생할 가능성이 있는 코드
except 예외타입1:
    # 예외타입1에 해당하는 오류가 발생했을 때 수행할 코드
except 예외타입2:
    # 예외타입2에 해당하는 오류가 발생했을 때 수행할 코드
...
else:
    # 오류가 발생하지 않았을 때 수행할 코드
finally:
    # 오류 발생 여부와 관계없이 항상 수행할 코드

예외 타입 설명

BaseException 모든 내장 예외의 기본 클래스입니다. 일반적으로 이 예외를 직접 사용하는 것은 권장되지 않습니다.
Exception 사용자 정의 예외를 포함하여 모든 내장 예외의 기본 클래스입니다.
ArithmeticError 수학 연산 관련 예외들의 기본 클래스입니다.
ZeroDivisionError 0으로 나누려고 할 때 발생합니다.
OverflowError 수치 연산 결과가 너무 커서 표현할 수 없을 때 발생합니다.
FloatingPointError 부동 소수점 연산 실패 시 발생합니다.
LookupError 시퀀스 관련 예외들의 기본 클래스입니다.
IndexError 시퀀스의 인덱스가 범위를 벗어날 때 발생합니다.
KeyError 딕셔너리에서 존재하지 않는 키를 조회하려고 할 때 발생합니다.
ValueError 올바르지 않은 값으로 인해 발생하는 예외입니다. 
예를 들어, int("abc")와 같이 숫자로 변환할 수 없는 문자열을 int() 함수에 전달하면 발생합니다.
TypeError 연산이나 함수가 적용되는 객체의 타입이 올바르지 않을 때 발생합니다. 
예를 들어, 문자열과 숫자를 더하려고 할 때 발생합니다.
NameError 지역 또는 전역 이름을 찾을 수 없을 때 발생합니다. 정의되지 않은 변수를 참조하려고 할 때 주로 발생합니다.
FileNotFoundError 요청한 파일이나 디렉토리를 찾을 수 없을 때 발생합니다.
IOError  I/O 연산(예: 파일 읽기/쓰기) 실패 시 발생하는 예외의 기본 클래스입니다.
ImportError 모듈이나 패키지를 임포트하는 도중 오류가 발생할 때 발생합니다.
AttributeError 객체에 존재하지 않는 속성을 참조하거나 할당하려고 할 때 발생합니다.
RuntimeError
다른 카테고리에 속하지 않는 오류가 발생할 때 발생하는 예외의 기본 클래스입니다.

이 외에도 파이썬에는 많은 내장 예외 타입들이 존재하며, 필요에 따라 자신만의 예외 타입을 정의하여 사용할 수도 있습니다. 각 예외 타입에 따라 try-except 구문 내에서 적절한 처리를 구현함으로써, 프로그램의 안정성과 유연성을 향상시킬 수 있습니다.

예시

1. 기본적인 사용 예시

try:
    result = 10 / 0
except ZeroDivisionError:
    print("0으로 나눌 수 없습니다.")

출력 결과

0으로 나눌 수 없습니다.

2. 여러 예외 처리하기

try:
    num_list = [1, 2, 3]
    print(num_list[3])
    result = 10 / 0
except ZeroDivisionError:
    print("0으로 나눌 수 없습니다.")
except IndexError:
    print("인덱스 범위를 벗어났습니다.")

출력 결과

인덱스 범위를 벗어났습니다.

3. 'else'와 'finally' 사용하기

try:
    result = 10 / 5
except ZeroDivisionError:
    print("0으로 나눌 수 없습니다.")
else:
    print("나눗셈 결과:", result)
finally:
    print("계산 완료!")

출력 결과

나눗셈 결과: 2.0
계산 완료!

'try' - 'except' 구문을 사용하면 예상치 못한 오류 상황에서도 프로그램이 안정적으로 동작하도록 할 수 있습니다. 특히 사용자 입력이나 외부 데이터를 처리할 때, 예외 처리를 통해 다양한 오류 상황에 대비하는 것이 중요합니다.

댓글