PYTHON - 예외처리와 모듈 (Chapter 7-1. 오류 종류와 기본 예외 처리)

2025. 3. 14. 10:17·Python

Chapter 7-1. 오류 종류와 기본 예외 처리

1. 구문 오류 (Syntax Error)

괄호의 개수, 들여쓰기 문제 등으로 프로그램이 실행되기도 전에 발생하는 오류입니다.

  • 구문 오류는 해결되지 않으면 프로그램 실행이 불가능합니다.
  • 오류의 종류
    • 프로그램 실행 전에 발생하는 오류를 구문 오류라고 함
    • 프로그램 실행 중에 발생하는 오류를 예외 또는 런타임 오류라고 함
  • 프로그램 언어의 오류에는 크게 두 가지 종류가 있습니다.
# 정상 실행
print("오류는 아주 사소한 것부터 발생합니다.")

# 출력
오류는 아주 사소한 것부터 발생합니다.

# 닫는 괄호를 생략한 경우
print("오류는 아주 사소한 것부터 발생합니다."
# => SyntaxError: incomplete input 발생

2. 예외 (Runtime Error)

실행 중에 발생하는 오류입니다.

  • 오류 키워드를 잘 살펴야 빠른 해결이 가능합니다.
# 정상 실행
print("오류는 아주 사소한 것부터 발생합니다.")

# 출력
오류는 아주 사소한 것부터 발생합니다.

# 예외 발생
dogs.append("말티즈")

# append는 list에 값을 넣어주는 함수입니다.
# dogs는 정의되어 있지 않기 때문에 NameError가 발생합니다.

오류 해결 코드

# 정상 실행
print("오류는 아주 사소한 것부터 발생합니다.")

# 예외 발생 코드 해결
dogs = ["닥스훈트", "시바견"]
dogs.append("말티즈")
print(dogs)

# 출력
오류는 아주 사소한 것부터 발생합니다.
['닥스훈트', '시바견', '말티즈']

3. 예외 처리

  • 예외를 해결하는 모든 것을 예외 처리라고 합니다.
  • 예외는 조건문을 사용하거나, try 구문을 사용하여 해결할 수 있습니다.
  • 구문 오류는 예외 처리로 해결이 불가능하여 코드 자체를 수정해야 해결됩니다.

4. 조건문을 이용한 예외 처리

  • 조건문을 이용한 예외 처리 방법을 기본 예외 처리라고 합니다.
  • 예외가 발생할 수 있는 상황을 파악하는 것이 중요합니다.
# 밑변과 높이를 입력받아 삼각형의 넓이를 계산하는 코드
x, y = map(int, input("밑변과 높이를 입력해주세요").split(" "))

print(f'삼각형의 넓이는 {x * y / 2}입니다.')

# 입력
3 5

# 출력
삼각형의 넓이는 7.5입니다.

# 입력
3cm 5cm

# 출력
ValueError : invalid literal for int() with base 10: '3cm'

오류 해결 코드

# 밑변과 높이를 입력받아 삼각형의 넓이를 계산하는 코드
x, y = input("밑변과 높이를 입력해주세요").split(" ")

if x.isdigit() and y.isdigit():
    x, y = int(x), int(y)
    print(f'삼각형의 넓이는 {x * y / 2}입니다.')
else:
    print("정수로 입력하지 않아 계산이 불가합니다.")

# 입력
3cm 6cm

# 출력
정수로 입력하지 않아 계산이 불가합니다.

이해도 체크리스트

  1. 오류의 종류에 대해 설명해주세요.
    • 구문 오류 (Syntax Error): 프로그램의 문법적 실수로 발생하며, 프로그램이 실행되기 전에 감지됩니다.
    • 예외 (Runtime Error): 프로그램 실행 중 발생하는 오류로, 예외 처리를 통해 해결 가능합니다.
  2. 오류 종류별로 해결할 수 있는 방법은?
    • 구문 오류: 코드의 문법적 오류를 수정하여 해결합니다. (예: 괄호, 들여쓰기 문제 등)
    • 예외: 조건문이나 try-except 구문을 통해 해결합니다.
  3. isdigit() 함수란?
    • 문자열이 숫자로만 구성되어 있는지 판단하여 True 또는 False를 반환합니다.
    • 사용 예시:
    num = "1234"
    print(num.isdigit())  # True
    
    num = "123a"
    print(num.isdigit())  # False
    

🚀 정리 및 요약

구분 설명 예시

구문 오류 문법적 실수로 프로그램이 실행되기 전에 발생 괄호 미작성, 들여쓰기 문제
예외 프로그램 실행 중 발생하는 오류 정의되지 않은 변수 사용 등
예외 처리 조건문, try-except로 예외 상황을 처리 if, try 사용
isdigit() 문자열이 숫자인지 확인 "1234" -> True

📝 Tip!

  • 예외는 사전에 조건문으로 걸러내면 프로그램이 더욱 안정적으로 실행됩니다.
  • 구문 오류는 프로그램 실행 전에 반드시 수정해야 합니다!

'''

📚 오류의 종류와 해결 방법 정리


✅ 1. 오류의 종류에 대해 설명해주세요

오류 종류 설명 예시

구문 오류 (Syntax Error) 코드의 문법적 실수로 인해 프로그램 실행이 불가능한 오류 괄호가 맞지 않거나, 들여쓰기 오류가 있는 경우
예외 (Runtime Error) 프로그램이 실행되는 중에 발생하는 오류로, 주로 예상치 못한 입력이나 잘못된 연산 등으로 발생 정의되지 않은 변수를 사용하거나 리스트 인덱스를 벗어나는 경우

📌 구문 오류 (Syntax Error)

  • 프로그램을 실행하기도 전에 발생하는 오류입니다.
  • 괄호, 들여쓰기, 문법 오류 등으로 인해 발생합니다.
  • 해결되지 않으면 프로그램이 실행되지 않습니다.
# 구문 오류 예제 - 괄호를 닫지 않아서 발생
print("오류는 아주 사소한 것부터 발생합니다."
# 출력
# SyntaxError: incomplete input 발생

📌 예외 (Runtime Error)

  • 프로그램이 실행되는 중간에 발생하는 오류입니다.
  • 정의되지 않은 변수를 사용하거나, 리스트 인덱스를 잘못 사용했을 때 발생합니다.
# 예외 발생 예제
dogs.append("말티즈")
# 출력
# NameError: name 'dogs' is not defined

✅ 2. 오류 종류별로 해결할 수 있는 방법에 대해 설명해주세요

오류 종류 해결 방법

구문 오류 문법적으로 잘못된 부분을 직접 수정해야 합니다. 괄호나 들여쓰기, 잘못된 키워드 등을 수정해줍니다.
예외 try-except 구문을 사용하여 예외를 사전에 처리하거나, 입력을 조건문으로 검사하여 예외 발생을 방지합니다.

📌 구문 오류 해결 방법

  • 문법적으로 잘못된 부분을 수정해야 합니다.
# 잘못된 코드
print("오류는 아주 사소한 것부터 발생합니다."

# 수정된 코드
print("오류는 아주 사소한 것부터 발생합니다.")

📌 예외 처리 방법 (try-except 사용)

try:
    dogs = ["닥스훈트", "시바견"]
    dogs.append("말티즈")
    print(dogs)
except NameError:
    print("리스트가 정의되어 있지 않습니다.")
  • try 블록에서 예외가 발생하면, except 블록이 실행되어 오류 메시지를 출력합니다.

✅ 3. isdigit() 함수에 대해 설명해주세요

  • isdigit() 함수는 문자열이 숫자로만 구성되어 있는지 확인하는 함수입니다.
  • 문자열이 숫자라면 True, 그렇지 않다면 False를 반환합니다.

📌 사용 예제

num1 = "1234"
num2 = "1234a"

print(num1.isdigit())  # 출력: True
print(num2.isdigit())  # 출력: False
  • num1은 숫자로만 구성되어 있어 True를 반환하고,
  • num2는 문자 'a'가 포함되어 있어 False를 반환합니다.

📌 isdigit()을 활용한 예외 처리

x, y = input("밑변과 높이를 입력해주세요").split(" ")

if x.isdigit() and y.isdigit():
    x, y = int(x), int(y)
    print(f'삼각형의 넓이는 {x * y / 2}입니다.')
else:
    print("정수로 입력하지 않아 계산이 불가합니다.")
  • 입력된 값이 숫자인지 먼저 검사하여, 정수로 변환 가능한 경우에만 계산을 진행합니다.
  • 입력값에 숫자가 아닌 문자가 포함되어 있으면 오류 메시지를 출력하여 예외를 방지합니다.

🚀 정리

  • isdigit()은 숫자로만 이루어진 문자열을 판별할 때 사용합니다.
  • 예외 처리를 통해 입력값의 유효성을 검증할 수 있습니다.
  • 오류는 구문 오류와 예외로 구분되며, 각각에 맞는 해결 방법을 사용해야 합니다.

이해가 안되거나 더 알고 싶은 부분이 있다면, 언제든지 물어봐 주세요! 😊

 

'Python' 카테고리의 다른 글

PYTHON - 예외처리와 모듈 (Chapter 7-35. 예외 객체와 구분하기)  (0) 2025.03.14
PYTHON - 예외처리와 모듈 (Chapter 7-34. try except 구문)  (0) 2025.03.14
프로젝트: 간단한 주소록 관리 시스템  (0) 2025.03.14
[[OZ코딩스쿨] 초격차 캠프 - 10일차 (함수) 심화 문제풀이  (0) 2025.03.13
📌 Python 학습 과정 – 이해와 반복의 중요성  (0) 2025.03.13
'Python' 카테고리의 다른 글
  • PYTHON - 예외처리와 모듈 (Chapter 7-35. 예외 객체와 구분하기)
  • PYTHON - 예외처리와 모듈 (Chapter 7-34. try except 구문)
  • 프로젝트: 간단한 주소록 관리 시스템
  • [[OZ코딩스쿨] 초격차 캠프 - 10일차 (함수) 심화 문제풀이
Chansman
Chansman
안녕하세요! 코딩을 시작한 지 얼마 되지 않은 초보 개발자 찬스맨입니다. 이 블로그는 제 학습 기록을 남기고, 다양한 코딩 실습을 통해 성장하는 과정을 공유하려고 합니다. 초보자의 눈높이에 맞춘 실습과 팁, 그리고 개발하면서 겪은 어려움과 해결 과정을 솔직하게 풀어내려 합니다. 함께 성장하는 개발자 커뮤니티가 되기를 바랍니다.
  • Chansman
    찬스맨의 프로그래밍 스토리
    Chansman
  • 전체
    오늘
    어제
    • 분류 전체보기 (657) N
      • Python (32)
      • 프로젝트 (43)
      • 과제 (25)
      • Database (40)
      • 멘토링 (11) N
      • 특강 (34) N
      • 기술블로그 (36) N
      • 기술블로그-Fastapi편 (20) N
      • 기술블로그-Django편 (152) N
      • 기술블로그-Flask편 (35)
      • AI 분석 (4)
      • HTML & CSS (31)
      • JavaScript (17)
      • AWS_Cloud (21)
      • 웹스크래핑과 데이터 수집 (14)
      • Flask (42)
      • Django (72)
      • Fastapi (1) N
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Chansman
PYTHON - 예외처리와 모듈 (Chapter 7-1. 오류 종류와 기본 예외 처리)
상단으로

티스토리툴바