Python 24일 코스 - Day 12: 예외 처리

Day 12: 예외 처리

기본 예외 처리

try:
    number = int(input("숫자를 입력하세요: "))
    result = 100 / number
    print(f"결과: {result}")
except ValueError:
    print("유효한 숫자를 입력하세요")
except ZeroDivisionError:
    print("0으로 나눌 수 없습니다")

try-except-else-finally

try:
    f = open("data.txt", "r")
    content = f.read()
except FileNotFoundError:
    print("파일을 찾을 수 없습니다")
else:
    print(f"파일 내용: {content}")  # 에러가 없을 때만 실행
finally:
    print("작업이 완료되었습니다")  # 항상 실행

주요 내장 예외

예외발생 상황
ValueError잘못된 값 변환
TypeError잘못된 타입 연산
KeyError딕셔너리 키 없음
IndexError인덱스 범위 초과
FileNotFoundError파일 없음
ZeroDivisionError0으로 나눗셈
AttributeError없는 속성 접근

사용자 정의 예외

class InsufficientBalanceError(Exception):
    def __init__(self, balance, amount):
        self.balance = balance
        self.amount = amount
        super().__init__(
            f"잔액 부족: 잔액 {balance}원, 출금 요청 {amount}원"
        )

def withdraw(balance, amount):
    if amount > balance:
        raise InsufficientBalanceError(balance, amount)
    return balance - amount

try:
    result = withdraw(1000, 5000)
except InsufficientBalanceError as e:
    print(e)  # 잔액 부족: 잔액 1000원, 출금 요청 5000원

오늘의 연습문제

  1. 사용자 입력을 검증하여 1~100 사이 정수만 받는 함수를 만드세요.
  2. 파일 읽기에서 발생할 수 있는 모든 예외를 처리하는 안전한 읽기 함수를 작성하세요.
  3. NegativeNumberError 사용자 정의 예외를 만들어 활용하세요.

이 글이 도움이 되었나요?