본문 바로가기
Python Basic

Exception

by fiasco 2022. 11. 23.

구문 1

try:
    실행할 코드
except 예외이름:
    예외가 발생했을 때 처리하는 코드

 

구문 2 :  as 이용

try:
    실행할 코드
except 예외 as 변수:
    예외가 발생했을 때 처리하는 코드

 

구문 3

try:
    실행할 코드
except:
    예외가 발생했을 때 처리하는 코드
else:
    예외가 발생하지 않았을 때 실행할 코드
finally:
    예외 발생 여부와 상관없이 항상 실행할 코드

 

구문 4  : raise

raise 예외명('에러메시지')

 

구문 5  : re - raise

# re-raise
def three_multiple():
    try:
        x = int(input('3의 배수를 입력하세요: '))
        if x % 3 != 0:                                 # x가 3의 배수가 아니면
            raise Exception('3의 배수가 아닙니다.')    # 예외를 발생시킴
        print(x)
    except Exception as e:                             # 함수 안에서 예외를 처리함
        print('three_multiple 함수에서 예외가 발생했습니다.', e)
        raise    # raise로 현재 예외를 다시 발생시켜서 상위 코드 블록으로 넘김

try:
    three_multiple()
except Exception as e:                                 # 하위 코드 블록에서 예외가 발생해도 실행됨
    print('스크립트 파일에서 예외가 발생했습니다.', e)

 

구문 6  : assert문에서의 예외 발생

assert는 지정된 조건식이 거짓일 때 AssertionError 예외를 발생시키며 조건식이 참이면 그냥 넘어갑니다. 

assert 조건식
assert 조건식, 에러메시지

 

예외 만들기

class 예외이름(Exception):
    def __init__(self):
        super().__init__('에러메시지')

 

class NotThreeMultipleError(Exception):    # Exception을 상속받아서 새로운 예외를 만듦
    def __init__(self):
        super().__init__('3의 배수가 아닙니다.')
 
def three_multiple():
    try:
        x = int(input('3의 배수를 입력하세요: '))
        if x % 3 != 0:                     # x가 3의 배수가 아니면
            raise NotThreeMultipleError    # NotThreeMultipleError 예외를 발생시킴
        print(x)
    except Exception as e:
        print('예외가 발생했습니다.', e)
 
three_multiple()

'Python Basic' 카테고리의 다른 글

제너레이터(generator)  (0) 2022.11.23
이터레이터(iterator)  (0) 2022.11.23
decorator 사용법  (0) 2022.11.23
closure 사용법  (0) 2022.11.23
Programming productivity tools  (0) 2022.11.08