Python은 예외 처리(try-except) 구문을 통해 프로그램의 비정상 종료를 방지하고, 예외 상황을 우아하게 처리할 수 있도록 도와줍니다.
예외(Exception)는 프로그램 실행 중 발생하는 오류입니다.
python
print(10 / 0)
ZeroDivisionError: division by zero
위처럼 예외가 발생하면 프로그램이 중단됩니다. 이 문제를 해결하려면 예외 처리 구문을 사용해야 합니다.
python
try:
실행할 코드
except 예외타입:
예외 발생 시 실행할 코드
python
try:
num = int(input("숫자를 입력하세요: "))
print(10/num)
except ZeroDivisionError:
print("0으로 나눌 수 없습니다.")
except ValueError:
print("정수를 입력해주세요.")
except 블록을 여러 개 사용할 수 있으며, 예외 메시지도 출력할 수 있습니다.
python
try:
num = int(input("숫자 입력: "))
print(10 / num)
except ZeroDivisionError as e:
print("오류:", e)
except ValueError:
print("숫자가 아닙니다.")
python
try:
# 코드
except Exception as e:
print("알 수 없는 오류 발생:", e)
🔸 else
python
try:
num = int(input("숫자 입력: "))
except ValueError:
print("정수가 아닙니다.")
else:
print("입력 성공:", num)
🔸 finally
python
try:
f = open("file.txt", "r")
print(f.read())
except FileNotFoundError:
print("파일이 존재하지 않습니다.")
finally:
f.close()
print("파일 닫기 완료")
개발자가 의도적으로 예외를 발생시킬 수 있습니다.
python
def divide(x):
if x == 0:
raise ValueError("0으로 나눌 수 없습니다.")
return 10 / x
try:
print(divide(0))
except ValueError as e:
print("오류 발생:", e)
기존 예외로 처리하기 애매한 상황에 대해 직접 예외 클래스를 정의할 수 있습니다.
python
class NegativeNumberError(Exception):
def __init__(self, value):
self.value = value
def check_number(n):
if n < 0:
raise NegativeNumberError(n)
try:
check_number(-10)
except NegativeNumberError as e:
print(f"음수는 허용되지 않습니다: {e.value}")
실전 팁
마무리
이번 편에서는 Python의 예외 처리 흐름을 기초부터 심화까지 다뤘습니다.
| 키워드 | 역할 |
| --------- | ------------------ |
| try | 예외가 발생할 수 있는 코드 블록 |
| except | 예외 발생 시 실행할 코드 |
| else | 예외가 발생하지 않았을 때 실행 |
| finally | 무조건 실행되는 코드 블록 |
| raise | 직접 예외를 발생시킴 |
| 사용자 정의 예외 | 예외 상황을 커스터마이징 |
다음 편에서는 Python의 핵심 개념 중 하나인 객체지향 프로그래밍을 학습해보겠습니다.