Python 17 - 예외처리, 에러발생시키기
2021. 5. 9. 16:51ㆍpython
반응형
# 예외처리
try:
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:
print("나누기 전용 계산기입니다.")
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: # 어떤 수를 0으로 나누었을때 나는 오류
print(err)
except Exception as err:
# except만 입력하면 위에 두가지 에러를 제외한 모든에러를 아래문구로 표시할수 있다.
print("알 수 없는 에러가 발생하였습니다.")
print(err)
#Exception as err을 붙이고 print(err)까지 추가하면 에러가 무엇인지도 알 수 있다.
# 에러 발생시키기
try:
print("한 자리 숫자 나누기 전용 계산기 입니다.")
num1 = int(input("첫 번째 숫자를 입력하세요 : "))
num2 = int(input("두 번째 숫자를 입력하세요 : "))
if num1 >= 10 or num2 > 10:
raise ValueError #raise 의도적으로 특정에러를 발생시켜서 아래의 에러값을 출력시킬 수 있다.
print("{0} / {1} = {2}" .format(num1, num2, int(num1 / num2)))
except ValueError:
print("잘못된 값을 입력하였습니다. 한 자리 숫자만 입력하세요.")
# 사용자 정의 예외 처리
class BigNumberError(Exception): # Exception을 상속 받음
def __init__(self, msg):
self.msg = msg
def __str__(self):
return self.msg
try:
print("한 자리 숫자 나누기 전용 계산기 입니다.")
num1 = int(input("첫 번째 숫자를 입력하세요 : "))
num2 = int(input("두 번째 숫자를 입력하세요 : "))
if num1 >= 10 or num2 > 10:
# raise 의도적으로 특정에러를 발생시켜서 아래의 에러값을 출력시킬 수 있다.
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)
class BigNumberError(Exception): # Exception을 상속 받음
def __init__(self, msg):
self.msg = msg
def __str__(self):
return self.msg
#finally : 끝인사 같은 것
finally:
print("계산기를 이용해 주셔서 감사합니다.") # 항상 try마지막에 작성하고 에러가 발생하든 안하든 무조건적으로 출력이 된다.
반응형
'python' 카테고리의 다른 글
Python 19 - Quiz (0) | 2021.05.11 |
---|---|
Python 18 - Quiz (0) | 2021.05.10 |
Python 16 - pass, super (0) | 2021.05.08 |
Python 15 - 메소드 오버라이딩 (0) | 2021.05.07 |
Python 14 - 메소드(method), 상속, 다중상속 (0) | 2021.05.06 |