구문 오류(Syntax Error)
코드 실행 전에 발생하는 오류입니다.
예를 들어, 괄호를 닫지 않거나 잘못된 문법을 쓰면 발생합니다.
구문 오류는 반드시 코드를 수정해야 실행이 가능합니다.
print("Hello world" # 괄호가 닫히지 않아 SyntaxError 발생
예외(Exception) 또는 런타임 오류(Runtime Error)
코드 실행 중에 발생합니다.
문법은 맞지만, 실행 도중 문제가 생겼을 때 발생합니다.
예외 처리를 통해 프로그램이 비정상적으로 종료되는 것을 막을 수 있습니다.
n = 10
res = n / 0 # ZeroDivisionError 발생
실행 중에 발생할 수 있는 다양한 예외 상황(예: 파일이 없거나, 0으로 나누기 등)에 대비해 프로그램이 갑자기 종료되지 않도록 안전장치를 마련하는 것이 예외 처리의 목적입니다.
🌳조건문 : 입력값이 숫자인지 판별
user_input = input("숫자를 입력하세요: ")
if user_input.isdigit():
num = int(user_input)
else:
print("숫자가 아닙니다.")
🌳try-except 구문
예외가 발생할 수 있는 코드를 try 블록에 넣고, 예외가 발생하면 except 블록에서 처리합니다.
try:
print(1 / 0)
except ZeroDivisionError:
print("0으로 나눌 수 없습니다.")
여러 예외를 한번에 처리할 수 있다
try:
# 예외가 발생할 수 있는 코드
pass
except (TypeError, ValueError):
print("타입 또는 값 오류 발생")
예외 정보를 변수로 받아 활용
try:
open("없는파일.txt")
except FileNotFoundError as e:
print(e)
🌳try - except - else 구문
예외가 발생하지 않았을 때 실행할 코드를 else에 작성
try:
num = int(input("숫자 입력: "))
except ValueError:
print("숫자가 아닙니다.")
else:
print("입력한 숫자:", num)
🌳try - except - finally 구문
예외 발생 여부와 관계없이 항상 실행되는 코드는 finally에 작성.
주로 파일 닫기, 리소스 해제 등에 사용
try:
f = open("data.txt", "r")
data = f.read()
except FileNotFoundError:
print("파일이 없습니다.")
finally:
print("항상 실행되는 코드")
try는 반드시 except 또는 finally와 함께 사용해야 합니다.
else는 except 뒤에만 올 수 있습니다.
가능한 조합:
try + except
try + except + else
try + except + finally
try + except + else + finally
try + finally
SyntaxError - 잘못된 문법 (예: 괄호 미작성)
NameError - 정의되지 않은 변수 사용
ZeroDivisionError - 0으로 나누기 시도
IndexError - 리스트 등에서 인덱스 범위 벗어남
ValueError - 올바르지 않은 값 사용 (예: int('abc'))
KeyError - 딕셔너리에 없는 키 사용
AttributeError - 없는 속성/메서드 사용
FileNotFoundError - 존재하지 않는 파일 열기
TypeError - 타입 불일치 (예: 리스트 + 문자열)
EAFP (Easier to Ask Forgiveness than Permission):
일단 실행하고, 예외가 발생하면 처리합니다.
파이썬에서 권장하는 스타일입니다.
예시: try-except 사용
LBYL (Look Before You Leap):
실행 전 조건문으로 모든 상황을 체크합니다.
예시: if 문으로 타입, 값 등 미리 검사