프로그램을 작성하다 보면 예상치 못한 상황이 발생할 수 있습니다.
사용자가 잘못된 입력을 하거나, 파일이 존재하지 않거나, 네트워크 연결이 끊어지는 등 다양한 문제가 생기죠.
이때 프로그램이 갑자기 멈추지 않고 부드럽게 문제를 처리하려면 예외 처리(Exception Handling)가 필요합니다.
파이썬에서는 try-except 구문을 통해 쉽고 간단하게 예외를 다룰 수 있습니다.
본문
1. 예외(Exception)란?
예외란 프로그램 실행 중에 발생하는 예상하지 못한 오류를 말합니다.
예를 들어, 0으로 나누기를 시도하거나 존재하지 않는 파일을 열려고 할 때 예외가 발생합니다.
예외를 처리하지 않으면 프로그램은 즉시 종료되기 때문에, 에러를 미리 대비하고 대응하는 것이 매우 중요합니다.
2. try-except 기본 구조
파이썬에서는 try-except 구문을 사용하여 예외를 처리할 수 있습니다.
기본 구조는 다음과 같습니다.
try:
# 오류가 발생할 수 있는 코드
except 예외타입:
# 오류가 발생했을 때 실행할 코드
- try 블록: 오류가 발생할 가능성이 있는 코드를 작성합니다.
- except 블록: 오류가 발생했을 때 실행할 코드를 작성합니다.
3. 예제: 사용자 입력 다루기
아래는 사용자로부터 숫자를 입력받아 10을 나누는 간단한 예제입니다.
try:
num = int(input("숫자를 입력하세요: "))
print(10 / num)
except ZeroDivisionError:
print("0으로 나눌 수 없습니다!")
except ValueError:
print("유효한 숫자를 입력해주세요!")
- 사용자가 0을 입력하면 ZeroDivisionError가 발생합니다.
- 숫자가 아닌 문자를 입력하면 ValueError가 발생합니다.
에러에 맞게 친절한 메시지를 출력하고 프로그램이 계속 실행될 수 있도록 합니다.
4. 모든 예외를 한 번에 처리하고 싶을 때
특정 예외를 지정하지 않고 모든 예외를 한 번에 처리하고 싶다면 Exception 클래스를 사용할 수 있습니다.
try:
# 코드 실행
except Exception as e:
print(f"에러 발생: {e}")
단, 모든 에러를 무조건 잡아버리면 문제가 숨겨질 수 있으니 상황에 따라 신중하게 사용해야 합니다.
5. else와 finally 블록 활용하기
try-except 구문은 else와 finally 블록을 함께 사용할 수 있습니다.
- else: 예외가 발생하지 않았을 때 실행
- finally: 예외 발생 여부와 관계없이 무조건 실행
try:
num = int(input("숫자를 입력하세요: "))
except ValueError:
print("숫자가 아닙니다.")
else:
print(f"입력한 숫자는 {num}입니다.")
finally:
print("프로그램을 종료합니다.")
특히 finally는 파일을 닫거나 네트워크 연결을 종료할 때 매우 유용합니다.
6. 예외를 직접 발생시키는 방법 (raise)
개발자가 특정 조건을 만족하지 않을 때 직접 예외를 발생시킬 수도 있습니다.
이때는 raise 키워드를 사용합니다.
def set_age(age):
if age < 0:
raise ValueError("나이는 음수가 될 수 없습니다.")
print(f"나이: {age}")
set_age(25) # 정상 동작
set_age(-5) # 예외 발생
이렇게 직접 예외를 발생시키면 프로그램이 올바른 데이터만 처리하도록 만들 수 있습니다.
결론
예외 처리는 안정적이고 신뢰할 수 있는 프로그램을 만드는 데 필수적인 요소입니다.
파이썬의 try-except 구문을 활용하면 다양한 에러 상황에 유연하게 대처할 수 있습니다.
'개발 > Python' 카테고리의 다른 글
파이썬 파일 입출력(IO): 텍스트 파일 읽고 쓰기 기본기 (0) | 2025.05.02 |
---|---|
파이썬 모듈과 패키지: 파이썬 코드 재사용과 구조화하기 (0) | 2025.05.02 |
파이썬 클래스와 객체지향 프로그래밍(OOP) 입문 (1) | 2025.05.01 |
파이썬 함수(function) 만드는 방법과 활용법 쉽게 배우기 (0) | 2025.05.01 |
파이썬 반복문(for, while)과 리스트 컴프리헨션 정복하기 (1) | 2025.04.30 |