본문 바로가기

Python Study/파이썬 공부하기

[파이썬]Python raise 에러 설정하기

728x90

1. 파이썬 raise 에러


raise 에러는 사용자의 입력이나, 프로그램이 돌아가다가 우리가 의도하지 않게 돌아가는 것을 방지하기 위해서
일부러 에러를 발생시켜야 하는 경우가 있습니다, 그때 raise 를 이용하여 에러를 발생시킵니다.

raise 예시

chicken = 10
waiting = 1

while(True):
    print("[남은 치킨 : {0}]".format(chicken))
    order = int(input("치킨 몇 마리 주문하시겠습니까?"))
    if order > chicken:
        print("재료가 부족합니다")
    elif order <= 0:
    	raise #raise 라이브러리를 이용해서 에러 발생
        #raise ValueError #ValueError등 이미 지정되어있는 에러 명령어를 출력하면서 에러 발생
        #raise ValueError("한마리 이상 주문해주세요")
    else:
        print("[대기번호 {0}] {1} 마리 주문이 완료되었습니다." \
        .format(waiting, order))
        waiting += 1
        chicken -= order

위 예시에서는 치킨 주문량이 1개 미만일 경우

1. 다른 표기 없이 에러만 발생시키는 raise 선언

2. ValueError 라고 표기해주는 raise ValueError 처럼 기존에 존재하는 에러 함수등을 같이 선언

3. 원하는 에러 메시지를 함께 출력

해주는 총 3가지 코드를 예시로 적어봤습니다.

 

2. try & except 함수를 활용한 raise 에러


이번에는 유튜버 나도코딩님의 퀴즈 문제를 참조하여

try & except 함수를 활용한 raise 에러 처리 유형에 대해서 보여드리겠습니다.

from multiprocessing.connection import wait


chicken = 10
waiting = 1

class SoldOutError(Exception):
    pass

while(True):
    try:
        print("[남은 치킨 : {0}]".format(chicken))
        order = int(input("치킨 몇 마리 주문하시겠습니까?"))
        if order > chicken:
            print("재료가 부족합니다")
        elif order <= 0:
            raise ValueError
        else:
            print("[대기번호 {0}] {1} 마리 주문이 완료되었습니다." \
                .format(waiting, order))
            waiting += 1
            chicken -= order
        if chicken <= 0:
            raise SoldOutError
    except ValueError:
        print("잘못된 값을 입력하였습니다.")
    except SoldOutError:
        print("재고가 소진되어 더 이상 주문을 받지 않습니다.")

 

원하는 Error Class를 생성해주고

try & except에서 호출하여 원하는 Custom Error 함수를 활용할수 있습니다.

728x90
반응형