구분 | 설명 | 예시 |
---|---|---|
에러(error) | 문법적으로 잘못되어 실행 자체가 불가능한 오류 | SyntaxError, ImportError, IndentationError |
예외(Exception) | 실행 중 발생하는, 예측 가능한 문제 | ZeroDivisionError, ValueError, TypeError 등 |
try:
# 예외가 발생할 수 있는 코드
except [예외종류] :
# 예외 발생 시 실행
else:
# 예외가 발생하지 않았을 때 실행
finally:
# 예외와관계없이 항상 실행
# 사용자로부터 숫자 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:는 예외 없이 정상 입력된 경우 실행됨
# 문자를 보낼때 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
로 예외 내용을 구체적으로 받아 처리할 수 있음