Python 17 - 예외처리, 에러발생시키기

2021. 5. 9. 16:51python

반응형

# 예외처리

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