제수기 - 제발 수업내용을 기억해라 / 단순서업정리 시리즈
예외 exception
: 예외 처리에 의해서 핸들링(프로그램이 다시 정상실행될 수 있게 만드는 것)될 수 있는 미약한 오류오류 error
: 예외보다 심각한 수준의 오류(메모리 자원부족)
try
: 예외가 발생할 수 있는 코드 작성except
: 예외가 발생했을 때 처리 코드 작성 (n개 가능)else(옵션)
: try 구문에서 예외가 발생하지 않았을 때 실행코드 작성(for문, while문에도 사용 가능)finally(옵션)
: try 구문에서 예외가 발생하든, 하지 않든 무조건 실행할 코드 작성
except IndexError
: 리스트, 튜플 등 시퀀스 타입의 인덱스가 범위를 벗어난 경우 발생하는 예외를 처리except ZeroDivisionError
: 0으로 나누기를 시도할 때 발생하는 예외를 처리except Exception
: 모든 예외클래스의 부모 클래스이므로, 자식 예외 클래스를 대부분 핸들링할 수 있다. 하지만, 특정 예외(예: SystemExit
, KeyboardInterrupt
)는 제외된다.except BaseException
: 모든 예외의 최상위 부모 클래스. 모든 종류의 예외를 처리할 수 있으며, SystemExit
와 KeyboardInterrupt
같은 시스템 종료나 사용자 인터럽트도 잡지만, 일반적으로는 사용하지 않는 것이 권장된다.except FileNotFoundError
: 파일을 찾지 못했을 때 발생하는 예외를 처리상황에 맞는 특정 예외를 직접 발생시킬 수 있고, 이에 따라 흐름을 제어할 수 있다.
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('미성년자는 게임을 할 수 없습니다.')