2 minute read

파이썬 예외 처리(Exception Handling) 완벽 가이드: 안정적인 프로그램 작성을 위한 필수 기술, 초보자도 쉽게 이해하는 방법Permalink

파이썬 예외 처리(Exception Handling)는 프로그램 실행 중에 발생할 수 있는 오류(예외)를 처리하여 프로그램이 갑작스럽게 종료되는 것을 방지하고, 안정적으로 실행될 수 있도록 하는 기술입니다. 예외 처리를 통해 예상치 못한 상황에서도 프로그램이 정상적으로 작동하도록 만들 수 있습니다. 이 글에서는 파이썬 예외 처리의 개념, 사용법, 다양한 활용법을 예제 코드와 함께 자세히 설명합니다.

1. 예외(Exception)란 무엇인가?Permalink

예외는 프로그램 실행 중에 발생하는 오류를 의미합니다. 예를 들어, 존재하지 않는 파일을 열려고 하거나, 0으로 숫자를 나누는 경우 예외가 발생합니다. 예외가 발생하면 프로그램은 해당 지점에서 중단되고 오류 메시지를 출력합니다.

2. 예외 처리 기본 문법: try, exceptPermalink

try 블록에는 예외가 발생할 가능성이 있는 코드를 작성하고, except 블록에는 예외가 발생했을 때 실행할 코드를 작성합니다.

try:
    # 예외 발생 가능성이 있는 코드
    result = 10 / 0
except ZeroDivisionError:
    # 예외 처리 코드
    print("0으로 나눌 수 없습니다.")

위 예제에서 10 / 0ZeroDivisionError 예외를 발생시키므로, except 블록의 코드가 실행되어 “0으로 나눌 수 없습니다.”가 출력됩니다.

3. 다양한 예외 처리Permalink

3.1. 여러 개의 except 블록Permalink

하나의 try 블록에 여러 개의 except 블록을 사용하여 다양한 예외를 처리할 수 있습니다.

try:
    num = int(input("숫자를 입력하세요: "))
    result = 10 / num
    print(result)
except ValueError:
    print("잘못된 입력입니다. 숫자를 입력하세요.")
except ZeroDivisionError:
    print("0으로 나눌 수 없습니다.")

3.2. 모든 예외 처리: except ExceptionPermalink

except Exception을 사용하여 모든 예외를 처리할 수 있습니다. 하지만 특정 예외에 대한 처리가 필요하다면 구체적인 예외를 명시하는 것이 좋습니다.

try:
    # 예외 발생 가능성이 있는 코드
    ...
except Exception as e:
    print(f"예외 발생: {e}")

3.3. else 블록Permalink

else 블록은 try 블록에서 예외가 발생하지 않았을 때 실행됩니다.

try:
    num = int(input("숫자를 입력하세요: "))
    result = 10 / num
except ValueError:
    print("잘못된 입력입니다. 숫자를 입력하세요.")
except ZeroDivisionError:
    print("0으로 나눌 수 없습니다.")
else:
    print(f"결과: {result}")

3.4. finally 블록Permalink

finally 블록은 예외 발생 여부와 상관없이 항상 실행됩니다. 파일 닫기, 네트워크 연결 종료 등 자원 해제에 사용됩니다.

try:
    f = open("test.txt", "r")
    data = f.read()
    print(data)
except FileNotFoundError:
    print("파일을 찾을 수 없습니다.")
finally:
    if 'f' in locals():
        f.close()

4. 사용자 정의 예외Permalink

Exception 클래스를 상속받아 사용자 정의 예외를 만들 수 있습니다.

class MyError(Exception):
    def __init__(self, message):
        self.message = message

try:
    raise MyError("사용자 정의 예외 발생")
except MyError as e:
    print(f"사용자 정의 예외: {e.message}")

5. 예외 처리 활용 예시Permalink

5.1. 파일 입출력 오류 처리Permalink

try:
    f = open("data.txt", "r")
    # 파일 처리 코드
except FileNotFoundError:
    print("파일을 찾을 수 없습니다.")
except IOError:
    print("파일 입출력 오류 발생")

5.2. 네트워크 통신 오류 처리Permalink

import requests

try:
    response = requests.get("https://www.example.com")
    response.raise_for_status()  # HTTP 오류 발생 시 예외 발생
except requests.exceptions.RequestException as e:
    print(f"네트워크 오류: {e}")

6. 결론Permalink

파이썬 예외 처리는 안정적인 프로그램 작성을 위한 필수 기술입니다. try, except, else, finally 블록과 사용자 정의 예외를 활용하여 다양한 예외 상황에 대처하고, 견고한 파이썬 프로그램을 개발할 수 있습니다.

Top