제수기 > Python > exception

Eunbi Jo·2025년 1월 18일
0

제수기

목록 보기
75/90
제수기 - 제발 수업내용을 기억해라 / 단순서업정리 시리즈

Exception

exception error

발생시점에 따른 오류 구분 compile time error

  • 프로그램 작성 중에 확인되는 오류 Syntax Error

runtime error

  • 프로그램 시작 시 발생하는 오류
  • 프로그램 도중 발생하는 오류

exeception | error 구분

  • 예외 exception : 예외 처리에 의해서 핸들링(프로그램이 다시 정상실행될 수 있게 만드는 것)될 수 있는 미약한 오류
  • 오류 error : 예외보다 심각한 수준의 오류(메모리 자원부족)

예외처리를 통해서 예외발생 상황을 다시 정상 작동하게 흐름을 제어할 수 있다.

  • try: 예외가 발생할 수 있는 코드 작성
  • except: 예외가 발생했을 때 처리 코드 작성 (n개 가능)
  • else(옵션): try 구문에서 예외가 발생하지 않았을 때 실행코드 작성(for문, while문에도 사용 가능)
  • finally(옵션): try 구문에서 예외가 발생하든, 하지 않든 무조건 실행할 코드 작성

except 처리 종류

  • except IndexError : 리스트, 튜플 등 시퀀스 타입의 인덱스가 범위를 벗어난 경우 발생하는 예외를 처리
  • except ZeroDivisionError : 0으로 나누기를 시도할 때 발생하는 예외를 처리
  • except Exception : 모든 예외클래스의 부모 클래스이므로, 자식 예외 클래스를 대부분 핸들링할 수 있다. 하지만, 특정 예외(예: SystemExit, KeyboardInterrupt)는 제외된다.
  • except BaseException : 모든 예외의 최상위 부모 클래스. 모든 종류의 예외를 처리할 수 있으며, SystemExitKeyboardInterrupt 같은 시스템 종료나 사용자 인터럽트도 잡지만, 일반적으로는 사용하지 않는 것이 권장된다.
  • except FileNotFoundError : 파일을 찾지 못했을 때 발생하는 예외를 처리

raise 예외인스턴스

상황에 맞는 특정 예외를 직접 발생시킬 수 있고, 이에 따라 흐름을 제어할 수 있다.

  • if...else 흐름분기로 했을 때

  • raise exception 흐름분기로 했을 때

class UnderAgeError(Exception):  # 사용자 정의 예외 클래스
    pass

def check_age2():
    age = int(input("나이 입력 : "))
    if age < 20:
        raise UnderAgeError("미성년자 : ", age)  # 예외 발생

def adult_game2():
    try:
        check_age2()  # 나이 확인
        print('성인용 게임을 시작합니다.')  # 예외 없으면 실행
    except UnderAgeError as e:  # 예외 처리
        print('미성년자는 게임을 할 수 없습니다.')


0개의 댓글