본문 바로가기
파이썬 독학 (나도코딩)/Python

파이썬 독학 (나도코딩) 7

by Mecodata 2022. 5. 22.

try:~except:를 이용하여 에러 발생시의 출력값 설정이 가능함

에러의 종류에 따라 except에 입력하는 명령어가 달라짐

명령어 없이 그냥 except만 입력시 에러의 종류에 상관없이 모든 에러 발생시의 출력값 설정 가능

(단, 따로 명령어가 설정되어 있을 경우에는 그 명령어를 제외한 모든 에러에 적용)

ex) ValueError = 숫자를 입력해야 하는데 문자를 입력한 경우 (다른 종류의 가치값 입력)

     ZeroDivisionError =  0으로 다른 숫자를 나누려하는 경우

Exception as 를 이용하여 오류의 종류를 파악할 수 있음

 

if문에서 raise를 이용하여 조건 만족시 고의적으로 에러를 발생 시킬 수 있음

 

class 에러이름(Exception)를 이용하여 사용자가 새로운 에러를 정의할 수 있음 

새로 정의한 에러 발생시 출력될 메세지를 설정하고 싶으면 __init__과 __str__를 이용하여 설정 가능 

 

finally = try: 구문의 맨 마지막에 설정하여 에러가 발생하든 안하든 맨 마지막에 해당 설정을 무조건 실행하도록 하는 기능

chicken = 10
waiting = 1

class SoldOutError(Exception):
    pass

while(True):
    try:
        print("[남은 치킨] : {}".format(chicken))
        order = int(input("치킨 몇 마리 주문하시겠습니까?"))
        if order > chicken:
            print("재료가 부족합니다.")
        elif order < 1:
            raise ValueError

        else:
            print("[대기번호 {}] {} 마리 주문이 완료되었습니다."\
                  .format(waiting, order))
            waiting += 1
            chicken -= order

        if chicken == 0:
            raise SoldOutError("재고가 소진되어 더 이상 주문을 받지 않습니다.")
    except ValueError:
        print("잘못된 값을 입력하셨습니다.")

    except SoldOutError as err:
        print(err)
        break

치킨 주문 Quiz 

try 내에서 첫번째 if,elif,else는 order에 대한 조건들이고 두번째 if는 chicken에 대한 조건이라 if문 두개 설정 가능

break = 프로그램 종료

 

댓글