[Python] 예외(Exception)와 에러(Error)의 차이 ( + 예외 처리 실습)

Jimin_Note·2025년 7월 11일
0

[Python]

목록 보기
38/40
post-thumbnail

🔍 에러 vs 예외

구분설명예시
에러(error)문법적으로 잘못되어 실행 자체가 불가능한 오류SyntaxError, ImportError, IndentationError
예외(Exception)실행 중 발생하는, 예측 가능한 문제ZeroDivisionError, ValueError, TypeError 등

✅ 예외 처리 구문 구조

try:
	# 예외가 발생할 수 있는 코드
except [예외종류] : 
	# 예외 발생 시 실행
else: 
	# 예외가 발생하지 않았을 때 실행
finally:
    # 예외와관계없이 항상 실행

📌 실습 1: 숫자 입력 예외 처리 + 리스트 분류

# 사용자로부터 숫자 5개를 받아 짝수, 홀수, 실수로 구분해서 각각 리스트에 저장하는 프로그램
floatlist = []
oddlist = []
evenlist = []

n = 1
while n < 6 :
    try :
        num = float(input('input a number: '))

    except :
        print('exception')
        print('input numbers')
        continue

    else:
        if num - int(num) != 0 :
            print('float')
            floatlist.append(num)

        elif num % 2 == 0:
            print('even')
            evenlist.append(num)
        else:
            print('odd')
            oddlist.append(num)

        n +=1

print(floatlist, oddlist, evenlist)

📝 else:는 예외 없이 정상 입력된 경우 실행됨

📌 실습 2: raise로 예외 직접 발생시키기

# 문자를 보낼때 10글자 이하면 SMS, 10글자 초과면 MMS 로 발송하는 프로그램을 예외처리이용하여 만들기

def sendSMS(msg):

    if len(msg) > 10:
        raise Exception('길이초과!', 1)

    else:
        print("SMS 발송")

def sendMMS(msg):

    if len(msg) <= 10:
        raise Exception('길이미달!',2)
    else:
        print("MMS 발송")

msg = input('input text:')

try:
    sendSMS(msg)
except Exception as e:
    print(f'e : {e.args[0]}')
    print(f'e : {e.args[1]}')

    if e.args[1] == 1:
        sendMMS(msg)
    elif e.args[1] == 2:
        sendSMS(msg)

✅ 회고

  • try ~ except ~ else ~ finally 구문의 흐름을 정확히 이해하는 게 중요!
  • raise는 직접 예외를 발생시켜 흐름을 제어할 수 있음
  • e.args로 예외 내용을 구체적으로 받아 처리할 수 있음
  • 사용자 입력이나 조건 분기에서 자주 쓰임!
profile
Hello. I'm jimin:)

0개의 댓글