강의주소 : https://youtu.be/kWiCuklohdY
1 에러처리 방법
----- 일반
# error 처리하기
print("나누기 전용 계산기입니다.")
num1 = int(input("첫 번째 숫자 입력 : "))
num2 = int(input("두 번째 숫자 입력 : "))
print("{0}/{1}={2}" .format(num1, num2, int(num1/num2)))
-
------ 에러처리 1
try: #문제가 발생시 except 문장을 찾아서 에러값을 찾아서 print 값을 출력한다.
print("나누기 전용 계산기입니다.")
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: #문제가 발생시 except 문장을 찾아서 에러값을 찾아서 print 값을 출력한다.
print("나누기 전용 계산기입니다.")
nums = [] #변수 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)
try: #문제가 발생시 except 문장을 찾아서 에러값을 찾아서 print 값을 출력한다.
print("나누기 전용 계산기입니다.")
nums = [] #변수 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: #상기의 error를 제외한 모든 error를 아래읜 문구로 출력한다.
print("알 수 없는 에러가 발생하였습니다.")
또는
try: #문제가 발생시 except 문장을 찾아서 에러값을 찾아서 print 값을 출력한다.
print("나누기 전용 계산기입니다.")
nums = [] #변수 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 Exception as err: #정확한 에러 내용을 출력한다.
print("알 수 없는 에러가 발생하였습니다.")
print(err)
2 사용자 정의 예외처리
# error 발생
try: #문제가 발생시 except 문장을 찾아서 에러값을 찾아서 print 값을 출력한다.
print("한 자리 숫자 나누기 전용 계산기입니다.")
num1 = int(input("처음 숫자 입력 : "))
num2 = int(input("두번째 숫자 입력 : "))
if num1 >=10 or num2 >=10:
raise ValueError #error 만들기
print("{0}/{1}={2}" .format(num1, num2, int(num1/num2)))
except ValueError:
print("한 자리 숫자로 다시 입력")
사용자 예외처리 및 finally 함수
class BigNumberError(Exception):
def __init__(self, msg):
self.msg = msg
def __str__(self):
return self.msg
try: #문제가 발생시 except 문장을 찾아서 에러값을 찾아서 print 값을 출력한다.
print("한 자리 숫자 나누기 전용 계산기입니다.")
num1 = int(input("처음 숫자 입력 : "))
num2 = int(input("두번째 숫자 입력 : "))
if num1 >=10 or num2 >=10:
raise BigNumberError ("입력값 : {0}, {1}" .format(num1, num2))
print("{0}/{1}={2}" .format(num1, num2, int(num1/num2)))
except ValueError:
print("한 자리 숫자로 다시 입력")
except BigNumberError as err:
print("에러, 한 자리 숫자로 다시 입력")
print(err)
finally: #무조건 출력됨
print("계산기를 이용해주셔서 감사힙니다. ")
퀴즈
--------------------------- 내가 풀은거
일단 오답임, 입력 오류를 했을때 while 문을 빠져나가면 안되는데 try 문을 밖으로 빼서
빠져나감. 덕분에 재고소진시에는 프로그램이 자동 종료됨
chicken = 10
waiting = 1 #홀 만석, 대시 1부터 시작
class SoldOutError(Exception):
def __init__(self, msg):
self.msg = msg
def __str__(self):
return self.msg
try:
while(True):
print("[남은치킨 : {0}]" .format(chicken))
order = int(input("치킨 주문 몇마리?"))
if order < 1:
raise ValueError
elif order > chicken: #남은 치킨보다 주문량이 많을 때
print("재료 부족")
else:
print("[대기번호 {0}], {1}마리 주문완료" .format(waiting, order))
waiting += 1
chicken -= order
if chicken == 0:
raise SoldOutError ("재고소진")
except ValueError:
print("입력 오류 ")
except SoldOutError as err:
print(err)
--------------- 영상
chicken = 10
waiting = 1 #홀 만석, 대시 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 as err:
print("재고소진")
break
0 댓글