#예외처리 try
try:
num1 = int(input("입력 : "))
num2 = int(input("입력 : "))
print ("{0} / {1} = {2}".format( num1 , num2 , int(num1/num2)))
except ValueError:
print("예외발생!!")
except ZeroDivisionError as err:
print(err)
##############################################################################
try:
nums = []
nums.append(int(input("입력 : ")))
nums.append(int(input("입력 : ")))
nums.append(int(nums[0]/nums[1]))
print ("{0} / {1} = {2}".format( nums[0] , nums[1] , nums[2]))
except ValueError:
print("예외발생!!")
except ZeroDivisionError as err:
print(err)
except:
print("원인을 알수없는 오류")
##############################################################################
#예외 강제 발생
try:
num1 = int(input("입력 : "))
num2 = int(input("입력 : "))
if num1 >= 10 or num2 >= 10:
raise ValueError
print("{0} / {1} = {2}".format( num1 , num2 , int(num1/num2)))
except ValueError:
print("예외발생!!")
except Exception as err:
print(err)
finally:
print("이건 무조건 실행!!")
##############################################################################
#사용자정의 예외처리
class CustomizationError(Exception):
#pass
def init(self , msg):
self.msg = msg
def str(self):
return self.msg
try:
num1 = int(input("사용자정의 입력 : "))
num2 = int(input("사용자정의 입력 : "))
if num1 >= 10 or num2 >= 10:
raise CustomizationError("입력값 : {0} , {1}".format(num1 , num2))
print("{0} / {1} = {2}".format( num1 , num2 , int(num1/num2)))
except ValueError:
print("예외발생!!")
except CustomizationError as err:
print("사용자정의 예외발생!!")
print(err)
except Exception as err:
print(err)
finally:
print("이건 무조건 실행!!")
################### quiz ########################
#조건1 : 1보다 작거나 숫자가 아닌 입력값이 들어올 때는 ValueError로 처리
#조건2 : 현재 대기상태임. 총 치킨량은 10마리. 소진 시 SoldOutError(사용자 정의 에러) 발생 후 종료.
class SoldOutError(Exception):
def init(self , msg):
self.msg = msg
def str(self):
return self.msg
chicken = 10
waiting = 1 # 대기번호 1부터 시작
try:
while(True):
if chicken == 0:
break
raise SoldOutError("재고 소진")
ordercnt = int(input("몇마리 주문? : "))
if ordercnt < 1 :
raise ValueError()
if ordercnt > chicken:
print("재고부족")
else:
waiting += 1
chicken -= ordercnt
print("[대기번호 {0}] {1}마리 주문이 완료.".\
format(waiting , chicken) )
except ValueError:
print("주문요청이 잘못되었다.")
except SoldOutError as err:
print("사용자정의 예외발생!!")
print(err)
finally:
print("재고 소진으로 종료됩니다.!!")
#############################################################################
################################## output ###################################
#############################################################################
입력 : 8
입력 : 8
8 / 8 = 1
입력 : 8
입력 : 8
8 / 8 = 1
입력 : 66
입력 : 66
예외발생!!
사용자정의 입력 : 66
사용자정의 입력 : 66
사용자정의 예외발생!!
입력값 : 66 , 66
몇마리 주문? : 9
[대기번호 1] 9마리 주문이 완료.
몇마리 주문? : 9
재고부족
몇마리 주문? : 9
재고부족
몇마리 주문? : 1
[대기번호 2] 1마리 주문이 완료.
재고 소진으로 종료됩니다.!!