PYTHON - 예외처리와 모듈 (Chapter 7-35. 예외 객체와 구분하기)

2025. 3. 14. 11:33·Python
목차
  1. 1. 예외 객체(Exception)
  2. 입력 / 출력 예제
  3. 2. 예외 구분하기
  4. 3. 예외 구분 구문과 예외 객체
  5. 4. 모든 예외처리(Exception)
  6. 이호도 체크리스트
  7. 1. 구문 오류 (Syntax Error)
  8. 예시
  9. 2. 예외 (Runtime Error)
  10. 예시
  11. 3. 논리 오류 (Logical Error)
  12. 예시
  13. 4. 시스템 오류 (System Error)
  14. 5. 예외 처리 방법
  15. 예시: try-except
  16. 6. isdigit() 함수 설명
  17. 예시
  18. 활용 예시
  19. 1. 예외 객체(Exception)
  20. 예시 코드
  21. 또 다른 예시
  22. 2. 예외 구분하기
  23. 3. 예외 구분 구문과 예외 객체
  24. 4. 모든 예외처리(Exception)
  25. 이해도 체크리스트
  26. 🔥 결론

Chapter 7-35. 예외 객체와 구분하기

1. 예외 객체(Exception)

Exception을 사용하면 예외의 종류에 대해 알 수 있습니다.

try:
    x, y = map(int, input("벌병과 높이를 입력해주세요").split(" "))
    print(f'삼각형의 높이는 {x * y / 2}입니다.')
except Exception as exception:
    print("type(exception):", type(exception))
    print("exception:", exception)

입력 / 출력 예제

  • 입력: 3cm 5cm
  • 출력:
type(exception): <class 'ValueError'>
exception: invalid literal for int() with base 10: '3cm'

2. 예외 구분하기

다양한 예외가 발생하는 상황을 구분지역 대비하기 위해 예외 구분을 합니다.

try:
    number_input = int(input("찾고싶은 값의 위치를 입력해주세요"))
    print(f'{number_input}번째 요소 : {numbers[number_input]}')
except ValueError:
    print("정수로 입력해주세요")
except IndexError:
    print("리스트의 범위를 버석나왔습니다.")

3. 예외 구분 구문과 예외 객체

as 키워드를 이용해 객체의 속성과 메서드에 접근할 수 있습니다.

try:
    number_input = int(input("찾고싶은 값의 위치를 입력해주세요"))
    print(f'{number_input}번째 요소 : {numbers[number_input]}')
except ValueError as exception:
    print("정수로 입력해주세요")
    print("Exception:", exception)
except IndexError as exception:
    print("리스트의 범위를 버석나왔습니다.")
    print("Exception:", exception)

4. 모든 예외처리(Exception)

Exception 객체를 이용해 가장 많은 예외 사항을 처리할 수 있습니다.

try:
    number_input = int(input("찾고싶은 값의 위치를 입력해주세요"))
    print(f'{number_input}번째 요소 : {numbers[number_input]}')
    오류를.만들거야
except ValueError as exception:
    print("정수로 입력해주세요")
    print("Exception:", exception)
except Exception as exception:
    print("대처 불가한 예외가 발생했습니다.")
    print("Exception:", exception)

이호도 체크리스트

  1. 예외 객체를 이용해 예외의 종류와 구체적인 이유를 알려주세요.
  2. Exception 객체를 가장 확인하게 잘 사용할 수 있는 것은 무엇인가요?

예외 종류와 설명

1. 구문 오류 (Syntax Error)

  • 정의: 프로그램 실행 이전, 코드의 문법적 오류로 인해 발생하는 오류입니다.
  • 원인: 괄호 개수 불일치, 잘못된 들여쓰기, 오타 등.
  • 특징:
    • 프로그램이 실행되기 전 오류가 발생합니다.
    • 오류가 해결되지 않으면 프로그램 실행이 불가능합니다.

예시

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

# 괄호를 생략한 경우
print("오류는 아주 사소한 것부터 발생합니다."
# SyntaxError: unexpected EOF while parsing

2. 예외 (Runtime Error)

  • 정의: 프로그램 실행 중 발생하는 오류입니다.
  • 원인: 정의되지 않은 변수 참조, 0으로 나누기, 잘못된 데이터 형식 등.
  • 특징:
    • 프로그램이 실행 중일 때 오류가 발생합니다.
    • 적절히 처리하지 않으면 프로그램이 중단됩니다.

예시

# 오류 발생 코드
dogs.append("말티즈")
# NameError: name 'dogs' is not defined

# 해결된 코드
dogs = ["닥스훈트", "시바견"]
dogs.append("말티즈")
print(dogs)
# 출력: ['닥스훈트', '시바견', '말티즈']

 


3. 논리 오류 (Logical Error)

  • 정의: 문법적 오류는 없지만, 프로그램의 논리가 잘못되어 예상과 다른 결과를 초래하는 오류입니다.
  • 원인: 잘못된 알고리즘, 잘못된 연산 순서 등.
  • 특징:
    • 프로그램은 정상적으로 실행됩니다.
    • 결과가 의도한 바와 다르게 나옵니다.

예시

# 논리 오류 예시
x, y = 10, 0
result = x + y  # 원래는 나눗셈을 해야 하는 상황
print(f'결과는 {result}입니다.')
# 출력: 결과는 10입니다. (원래는 나눗셈 결과를 기대했음)

4. 시스템 오류 (System Error)

  • 정의: 하드웨어나 운영체제 등 시스템적인 문제로 인해 발생하는 오류입니다.
  • 원인: 메모리 부족, 디스크 공간 부족, 네트워크 장애 등.
  • 특징:
    • 프로그램 외적인 문제에서 발생합니다.
    • 대부분 시스템 설정이나 하드웨어 상태를 점검해야 합니다.

5. 예외 처리 방법

  • 조건문 사용: if, else 등을 통해 예외 발생 가능성을 미리 차단.
  • try-except 구문: 예외가 발생할 가능성이 있는 코드를 try 블록에 작성하고, 예외 발생 시 처리할 코드를 except 블록에 작성.
  • try-except-else-finally: 더 복잡한 예외 처리를 위해 else와 finally를 추가로 사용.

예시: try-except

try:
    x = int(input("숫자를 입력하세요: "))
    print(f"입력한 숫자는 {x}입니다.")
except ValueError:
    print("숫자가 아닌 값을 입력했습니다.")

6. isdigit() 함수 설명

  • 정의: 문자열이 숫자로만 이루어졌는지 판단하는 함수.
  • 반환값:
    • 문자열이 숫자로만 이루어져 있으면 True 반환.
    • 그렇지 않으면 False 반환.

예시

print("1234".isdigit())  # 출력: True
print("1234a".isdigit())  # 출력: False

활용 예시

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

이렇게 isdigit()을 활용하면 입력값이 숫자인지 쉽게 확인할 수 있습니다.

 

1. 예외 객체(Exception)

Exception을 사용하면 예외의 종류와 구체적인 이유를 알 수 있습니다.

예시 코드

try:
    x, y = map(int, input("밑변과 높이를 입력해주세요").split(" "))
    print(f'삼각형의 넓이는 {x * y / 2}입니다.')
except Exception as exception:
    print("type(exception):", type(exception))
    print("exception:", exception)

입력

3cm 5cm

출력

type(exception): <class 'ValueError'>
exception: invalid literal for int() with base 10: '3cm'

또 다른 예시

numbers = [23, 11, 7, 4, 12]

try:
    number_input = int(input("찾고싶은 값의 위치를 입력해주세요"))
    print(f'{number_input}번째 요소 : {numbers[number_input]}')
except Exception as exception:
    print("type(exception):", type(exception))
    print("exception:", exception)

입력

100

출력

type(exception): <class 'IndexError'>
exception: list index out of range

2. 예외 구분하기

try:
    number_input = int(input("찾고싶은 값의 위치를 입력해주세요"))
    print(f'{number_input}번째 요소 : {numbers[number_input]}')
except ValueError:
    print("정수로 입력해주세요")
except IndexError:
    print("리스트의 범위를 벗어났습니다. 입력값을 다시 확인해주세요")

입력

oz

출력

정수로 입력해주세요

입력

100

출력

리스트의 범위를 벗어났습니다. 입력값을 다시 확인해주세요

3. 예외 구분 구문과 예외 객체

try:
    number_input = int(input("찾고싶은 값의 위치를 입력해주세요"))
    print(f'{number_input}번째 요소 : {numbers[number_input]}')
except ValueError as exception:
    print("정수로 입력해주세요")
    print("Exception:", exception)
except IndexError as exception:
    print("리스트의 범위를 벗어났습니다. 입력값을 다시 확인해주세요")
    print("Exception:", exception)

4. 모든 예외처리(Exception)

try:
    number_input = int(input("찾고싶은 값의 위치를 입력해주세요"))
    print(f'{number_input}번째 요소 : {numbers[number_input]}')
    에러를.만들꺼야
except ValueError as exception:
    print("정수로 입력해주세요")
    print("Exception:", exception)
except Exception as exception:
    print("대처 불가한 예외가 발생했습니다.")
    print("Exception:", exception)

이해도 체크리스트

  1. except Exception as exception: 을 사용하는 이유
    • 발생한 예외를 변수로 받아서 예외의 타입과 메시지를 확인하기 위함입니다.
  2. Exception 객체에서 확인 가능한 주요 속성
    • type(exception) : 예외의 타입을 확인합니다.
    • exception : 발생한 예외의 메시지를 반환합니다.
    • exception.args : 예외 메시지를 튜플 형태로 반환합니다.
  3. Exception 객체를 가장 효과적으로 사용할 수 있는 방법
    • 디버깅: 예외 타입과 메시지를 출력하여 오류의 원인을 빠르게 파악합니다.
    • 로깅: logging 모듈과 함께 사용하여 예외 발생 기록을 남깁니다.
    • 사용자 친절 메시지 제공: 사용자에게 예외 원인을 명확히 안내합니다.

🔥 결론

  • Exception 객체는 예외 발생 시 정확한 원인과 이유를 확인하는 데 필수적입니다.
  • as 키워드와 함께 사용하여 예외 정보를 변수로 받아 다양한 처리를 할 수 있습니다.
  • type(), args, str() 등을 활용해 디버깅, 유지보수, 사용자 경험 개선에 유용하게 사용할 수 있습니다.

'Python' 카테고리의 다른 글

PYTHON - 예외처리와 모듈 (Chapter 7-37. 표준모듈)  (0) 2025.03.14
PYTHON - 예외처리와 모듈 (Chapter 7-36. raise 구문)  (0) 2025.03.14
PYTHON - 예외처리와 모듈 (Chapter 7-34. try except 구문)  (0) 2025.03.14
PYTHON - 예외처리와 모듈 (Chapter 7-1. 오류 종류와 기본 예외 처리)  (0) 2025.03.14
프로젝트: 간단한 주소록 관리 시스템  (0) 2025.03.14
  1. 1. 예외 객체(Exception)
  2. 입력 / 출력 예제
  3. 2. 예외 구분하기
  4. 3. 예외 구분 구문과 예외 객체
  5. 4. 모든 예외처리(Exception)
  6. 이호도 체크리스트
  7. 1. 구문 오류 (Syntax Error)
  8. 예시
  9. 2. 예외 (Runtime Error)
  10. 예시
  11. 3. 논리 오류 (Logical Error)
  12. 예시
  13. 4. 시스템 오류 (System Error)
  14. 5. 예외 처리 방법
  15. 예시: try-except
  16. 6. isdigit() 함수 설명
  17. 예시
  18. 활용 예시
  19. 1. 예외 객체(Exception)
  20. 예시 코드
  21. 또 다른 예시
  22. 2. 예외 구분하기
  23. 3. 예외 구분 구문과 예외 객체
  24. 4. 모든 예외처리(Exception)
  25. 이해도 체크리스트
  26. 🔥 결론
'Python' 카테고리의 다른 글
  • PYTHON - 예외처리와 모듈 (Chapter 7-37. 표준모듈)
  • PYTHON - 예외처리와 모듈 (Chapter 7-36. raise 구문)
  • PYTHON - 예외처리와 모듈 (Chapter 7-34. try except 구문)
  • PYTHON - 예외처리와 모듈 (Chapter 7-1. 오류 종류와 기본 예외 처리)
Chansman
Chansman
안녕하세요! 코딩을 시작한 지 얼마 되지 않은 초보 개발자 찬스맨입니다. 이 블로그는 제 학습 기록을 남기고, 다양한 코딩 실습을 통해 성장하는 과정을 공유하려고 합니다. 초보자의 눈높이에 맞춘 실습과 팁, 그리고 개발하면서 겪은 어려움과 해결 과정을 솔직하게 풀어내려 합니다. 함께 성장하는 개발자 커뮤니티가 되기를 바랍니다.
  • Chansman
    찬스맨의 프로그래밍 스토리
    Chansman
  • 전체
    오늘
    어제
    • 분류 전체보기 (756) N
      • Python (32)
      • 프로젝트 (80) N
      • 과제 (25)
      • Database (40)
      • 멘토링 (11)
      • 특강 (37)
      • 기술블로그 (41)
      • 기술블로그-Fastapi편 (33)
      • 기술블로그-Django편 (153)
      • 기술블로그-Flask편 (36)
      • AI 분석 (5)
      • HTML & CSS (31)
      • JavaScript (17)
      • AWS_Cloud (21)
      • 웹스크래핑과 데이터 수집 (14)
      • Flask (42)
      • Django (77)
      • Fastapi (16)
      • 연예 (14)
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

    btscomeback
    lawsuitculture
    basalcellcarcinoma
    americanlaw
    RM
    bts
    hotcoffeecase
    travel ban
    btsreunion
    뷔
    americaparty
    urbantrends
    newpoliticalparty
    livebroadcast
    youngprofessionals
    btsjungkook
    life reflection
    global politics
    self-growth
    chatgpterror
    gpterror
    classaction
    remittance
    trumpmuskclash
    college reunions
    smartphonedurability
    btsdischarge
    chinanightlife
    titaniumcase
    homebartrend
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Chansman
PYTHON - 예외처리와 모듈 (Chapter 7-35. 예외 객체와 구분하기)

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.