Python 기초

13 . 예외 처리

imysydesu 2026. 5. 29. 16:15

 

 

 

1 . 예외 (Exception)

 

 

 

  • 프로그램 실행 중 발생할 수 있는 예상치 못한 문제 또는 오류 상황을 의미
  • 예외 발생 시 프로그램은 중단되기 때문에 이를 적절히 처리하여 중단을 방지하거나 오류에 대한 정보를 사용자에게 제공해야 함

 

 

 

- 0으로 나누기 -> 오류

- ZeroDivisionError -> Exception 안에 포함됨

 

 

 

 

 

 

 


 

 

 

 

 

 

2 . 예외 계층 구조

 

 

 

- BaseException이 따로 있는 이유는 "진짜 에러"와 "프로그램 제어용 이벤트"를 구분하기 위해서임

 

 

 

 

 

2 - 1 . Exception

 

 

  • 코드 실행 중 발생한 일반적인 오류
  • 0으로 나누기 잘못된 타입 값 오류

 

 

 

2 - 2 . KeyboardInterrupt

 

 

  • 사용자가 Ctrl + C 눌렀을 때 발생
  • 프로그램을 강제로 멈추는 신호

 

 

 

2 - 3 . SystemExit

 

 

  • 프로그램 종료 요청
  • 내부적으로 exit() 호출 시 발생
  • KeyboardInterrupt와 SystemExit는 사실 "에러"가 아니라 프로그램을 멈추거나 종료하기 위한 신호

 

 

 

 

 


 

 

 

 

 

 

3 . 예외 처리 기본 구조

 

 

 

 

 

- 기본값

 

- 어떤 오류가 발생될지 모르겠을 때는 ValueError, TypeError, ZeroDivisionError 등의 부모인 Exception을 작성해도 됨

- else, finally는 생략 가능함

 

 

 

 

 

 

  • 예외 처리 시 except 구문을 위에서 아래로 하나씩 검사
  • KeyboardInterrupt는 Exception의 자식이 아닌 BaseException의 자식이기 때문에 BaseException 출력
  • except: 는 BaseException이 생략된 상태라 사용 시 오류가 발생될 수 있음

 

 

 

 

 

3 - 1 . raise

 

 

  • 의도적으로 예외를 발생시키거나 현재 발생한 예외를 다시 전달하기 위해 사용하는 키워드
  • 잘못된 입력이나 비정상적인 상태를 명확하게 알리고 호출한 쪽에서 적절히 처리하도록 흐름을 제어할 수 있음

 

 

 

 

 

 

3 - 2 . 파이썬 주요 예외 타입 정리

 

 

 

 

 

 

 

- 0으로 나눌 수 없음 -> ZeroDivisionError

- ZeroDivisionError의 부모는 Exception이기 때문에 결과가 동일함

 

 

 

 

- 없는 인덱스 출력 -> IndexError

 

 

 

 

 

 

 

 

 

 


 

 

 

 

 

 

4 . 예외 객체 내부 구조

 

 

 

 

  • except ExceptionType의 뒤에 as를 붙이는 이유 : 발생한 예외 객체를 변수로 받아 안에 담긴 정보를 활용하기 위해

 

 

 

-기본값

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


 

'Python 기초' 카테고리의 다른 글

15 . 모듈  (0) 2026.06.01
14 . 매직 메서드  (0) 2026.05.29
12 . 객체지향 프로그래밍 4대 패러다임  (0) 2026.05.29
11 . 객체지향 프로그래밍(OOP)  (0) 2026.05.28
10 . 사용자 정의 함수  (0) 2026.05.28