검색
회원가입로그인

제11장: 예외 처리와 오류 관리

파이썬의 예외 처리와 오류 관리는 왜 중요한가?

프로그래밍에는 예기치 않은 상황이 늘 따라옵니다. 파일이 없거나, 0으로 나누기, 잘못된 데이터 입력 등 수많은 오류가 프로그램 실행 중에 발생할 수 있습니다. 만약 이런 오류에 제대로 대처하지 못한다면, 프로그램은 바로 멈추고 사용자는 원인조차 모른 채 혼란에 빠질 수 있습니다. 그렇기 때문에 "예외 처리"는 파이썬 기초를 넘어 꼭 숙달해야 할 핵심입니다.

예외란 무엇인가?

파이썬에서 예외(Exception)는 코드가 정상 흐름을 벗어나 실행이 중단되는 상황, 즉 오류를 일컫습니다. 대표적으로 잘못된 수식 계산, 없는 리스트 인덱스 접근, 숫자가 아닌 값을 숫자로 변환하는 경우 등이 있습니다. 이런 문제들은 그대로 두면 프로그램이 즉시 종료됩니다.

try-except로 안전한 코드 만들기

파이썬은 try-except 구조를 통해 오류 발생을 감지하고, 원하는 방식으로 처리할 수 있게 해줍니다. 아래와 같은 형식이 기본입니다.

try:
    # 예외가 날 수 있는 코드 입력
except 예외타입:
    # 오류 발생 시 실행할 코드

간단한 예를 살펴봅시다.

try:
    n = int(input("숫자를 입력하세요: "))
    print(n)
except ValueError:
    print("숫자만 입력 가능합니다.")

사용자가 "사과"처럼 숫자가 아닌 값을 입력하면, 프로그램은 죽지 않고 안내 문구를 출력합니다.

여러 예외 다루기

때때로 다양한 종류의 예외가 한 코드에서 발생할 수 있습니다. 여러 예외를 구분하려면 except 문을 나란히 두거나, 한 줄에 여러 예외를 묶을 수 있습니다.

try:
    num = 10 / int(input("0이 아닌 숫자를 입력하세요: "))
except ZeroDivisionError:
    print("0으로는 나눌 수 없습니다.")
except ValueError:
    print("정수를 입력하세요.")
except Exception:
    print("알 수 없는 오류가 발생했습니다.")

else와 finally의 역할

else 절은 예외가 발생하지 않을 때만 실행됩니다. finally는 예외 발생 여부와 상관없이 항상 실행되어, 파일 닫기 등 마무리 작업에 적합합니다.

try:
    f = open("test.txt", "r")
except FileNotFoundError:
    print("파일이 존재하지 않습니다.")
else:
    print("파일을 정상적으로 열었습니다.")
    f.close()
finally:
    print("프로그램 종료.")

직접 예외 발생시키기

특별한 조건에서 손수 오류를 일으켜야 할 때는 raise 구문을 사용합니다. 예를 들어, 점수 입력이 음수면 오류를 내도록 설정할 수 있습니다.

def enter_score(score):
    if score < 0:
        raise ValueError("점수는 음수가 될 수 없습니다.")

예외 처리, 왜 연습해야 할까?

아무리 간단한 프로그램이라도 예상치 못한 환경에서 오류가 날 수 있습니다. 안정적이고 신뢰받는 코드를 만들려면 예외상황을 미리 생각하고, 상황에 맞게 밝고 친절하게 처리해 주는 습관이 필요합니다. 작은 실수 한 번이 전체 시스템을 멈추게 할 수 있기 때문입니다.

예외 처리는 초보자에게 어렵게 느껴질 수 있지만, 다양한 실습 사례를 통해 익숙해지면 프로그램의 견고함과 신뢰성을 크게 높일 수 있습니다. 실전에서는 꼭 필요한 기술입니다.

공유하기
카카오로 공유하기
페이스북 공유하기
트위터로 공유하기
url 복사하기
조회수 : 17
heart