파이썬 예외 처리: try-except 문으로 안전한 코드 작성하기

파이썬 예외 처리: try-except 문으로 안전한 코드 작성하기

안녕하세요, mj입니다. 오늘은 파이썬에서 예외 처리 방법에 대해 알아보겠습니다. 프로그래밍을 하다 보면 예상치 못한 오류가 발생하는 경우가 많습니다. 이러한 오류를 적절하게 처리하지 않으면 프로그램이 중단되거나, 심각한 문제를 일으킬 수 있습니다. 그래서 우리는 try-except 문을 사용하여 안전한 코드를 작성해야 합니다.

1. try-except 문 기본 구조

try-except 문은 다음과 같은 기본 구조를 가집니다:

try:
    # 위험한 코드
except ExceptionType:
    # 예외 처리 코드
        

위의 구조에서 try 블록 안에 위험한 코드를 작성하고, except 블록에서는 해당 코드에서 발생할 수 있는 예외를 처리합니다.

2. 예외 처리 예시

2.1. ZeroDivisionError 처리 예시

0으로 나누는 경우 발생하는 ZeroDivisionError를 처리하는 예시입니다.

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

출력 결과: 0으로 나눌 수 없습니다.

2.2. ValueError 처리 예시

숫자가 아닌 값을 정수로 변환할 때 발생하는 ValueError를 처리하는 예시입니다.

try:
    number = int("문자열")
except ValueError:
    print("정수로 변환할 수 없습니다.")
        

출력 결과: 정수로 변환할 수 없습니다.

2.3. FileNotFoundError 처리 예시

존재하지 않는 파일을 열 때 발생하는 FileNotFoundError를 처리하는 예시입니다.

try:
    with open("없는파일.txt", "r") as file:
        content = file.read()
except FileNotFoundError:
    print("파일을 찾을 수 없습니다.")
        

출력 결과: 파일을 찾을 수 없습니다.

2.4. IndexError 처리 예시

리스트의 인덱스 범위를 초과할 때 발생하는 IndexError를 처리하는 예시입니다.

my_list = [1, 2, 3]
try:
    print(my_list[5])
except IndexError:
    print("인덱스 범위를 초과했습니다.")
        

출력 결과: 인덱스 범위를 초과했습니다.

2.5. KeyError 처리 예시

딕셔너리에 없는 키를 조회할 때 발생하는 KeyError를 처리하는 예시입니다.

my_dict = {"a": 1, "b": 2}
try:
    print(my_dict["c"])
except KeyError:
    print("존재하지 않는 키입니다.")
        

출력 결과: 존재하지 않는 키입니다.

3. 여러 예외 처리하기

try 블록에서 여러 예외를 처리할 수도 있습니다. 예를 들어:

try:
    x = int(input("숫자를 입력하세요: "))
    result = 10 / x
except (ValueError, ZeroDivisionError) as e:
    print("입력 오류:", e)
        

위 예제는 사용자가 숫자가 아닌 값을 입력하거나 0을 입력했을 때 모두 처리할 수 있습니다.

4. 예외 발생시키기

우리는 raise 문을 사용하여 사용자 정의 예외를 발생시킬 수 있습니다. 예를 들어:

def check_age(age):
    if age < 0:
        raise ValueError("나이는 0보다 작을 수 없습니다.")
    print("입력한 나이:", age)

try:
    check_age(-1)
except ValueError as e:
    print(e)
        

출력 결과: 나이는 0보다 작을 수 없습니다.

마무리

이상으로 파이썬의 예외 처리 방법에 대해 알아보았습니다. try-except 문을 사용하면 코드의 안전성을 높이고, 예외 상황에서도 프로그램이 중단되지 않도록 할 수 있습니다. 다양한 예제를 통해 이해를 돕기 위해 노력했으니, 실제로 코드에 적용해 보시기 바랍니다. 감사합니다!

안녕히 계세요, mj입니다.