파이썬 예외 처리 완벽 가이드

반응형

예외처리

프로그래밍에서 예외(Exception)는 코드 실행 중 발생할 수 있는 오류를 의미합니다.

파이썬에서는 예외가 발생하더라도 프로그램이 비정상 종료되지 않고, 오류를 적절히 처리하여 계속 실행될 수 있도록 돕는 예외 처리(Exception Handling) 메커니즘을 제공합니다.

 

이번 포스트에서는 파이썬의 예외 처리 기법을 다루며, 실무에서 활용할 수 있는 예제와 팁을 공부한 내용을 기록하였습니다. 


1. 파이썬 예외란 무엇인가?

 

1.1 예외의 정의

  • 예외는 코드 실행 중 발생하는 의도치 않은 상황(에러) 입니다.
  • 예외가 발생하면 프로그램의 흐름이 중단됩니다.

1.2 파이썬에서 자주 발생하는 예외

예외 종류


2. 예외 처리 기본 문법

 

파이썬에서 예외 처리는 `try` , `except`, `else`, `finally` 블록을 사용합니다.

 

2.1 기본문법

try:
    # 예외가 발생할 가능성이 있는 코드
except 예외_타입:
    # 예외가 발생했을 때 실행할 코드
else:
    # 예외가 발생하지 않았을 때 실행할 코드
finally:
    # 예외 발생 여부와 상관없이 항상 실행할 코드

 


3. 예외 처리 예제

 

3.1 기본 예제

try:
    x = int(input("숫자를 입력하세요: "))
    print(10 / x)
except ValueError:
    print("유효한 숫자를 입력하세요.")
except ZeroDivisionError:
    print("0으로 나눌 수 없습니다.")

 

3.2 여러 예외 처리

하나의 `except` 블록에서 여러 예외를 처리할 수 있습니다.

try:
    lst = [1, 2, 3]
    print(lst[5])
except (IndexError, KeyError):
    print("인덱스 또는 키 오류가 발생했습니다.")

 

3.3 모든 예외 처리

모든 예외를 처리하고자 할 때, 예외 타입을 생략할 수 있습니다.

try:
    result = 10 / 0
except:
    print("예외가 발생했습니다.")

<주의> 모든 예외를 포괄적으로 처리하면 디버깅이 어려울 수 있으므로 권장은 하지 않습니다.

 

3.4 예외 발생시키기 (`raise`)

필요에 따라 사용자 정의 예외를 발생시킬 수 있습니다.

def check_positive(number):
    if number < 0:
        raise ValueError("양수를 입력하세요.")
    return number

try:
    check_positive(-10)
except ValueError as e:
    print(e)  # 양수를 입력하세요.

4. 사용자 정의 예외

특정한 상황에 맞는 예외를 정의할 수 있습니다.

 

4.1 사용자 정의 예외 클래스

class CustomError(Exception):
    pass

try:
    raise CustomError("사용자 정의 예외 발생!")
except CustomError as e:
    print(e)

5. 예외 처리의 활용 예제

 

5.1 파일 처리에서의 예외 처리

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

 

5.2 API 호출에서 예외처리

import requests

try:
    response = requests.get("https://api.example.com/data")
    response.raise_for_status()
except requests.exceptions.RequestException as e:
    print(f"API 요청 중 오류 발생: {e}")

6. 예외 처리의 최적화된 사용법

 

6.1 최소한의 예외 처리

예외 처리는 꼭 필요한 경우에만 사용하여 코드 가독성을 높입니다.

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

 

6.2 로그 기록 활용

`logging` 모듈을 활용해 예외를 기록합니다.

import logging

logging.basicConfig(level=logging.ERROR)

try:
    result = 10 / 0
except ZeroDivisionError as e:
    logging.error(f"예외 발생: {e}")

== 요약 ==

키워드 요약

 

 

반응형

'Python > Basic' 카테고리의 다른 글

파이썬 함수와 클래스  (0) 2024.11.24
파이썬 조건문과 반복문 완벽 가이드  (0) 2024.11.23
Data Type 2 - LIST, Tuple, Set, Dictionary  (0) 2024.11.22
Python Data Type  (3) 2024.11.22
Python의 소개  (0) 2024.11.19