본문 바로가기
코딩공부/Python

[python]try, except(ZeroDivisionError,ValueError) / TIL_220914

by Dong_Devlog 2022. 9. 14.

python에서 문법을 사용해 에러가 발생했을 때 처리해주는 문법이 try / except이다.

 

숫자를 입력하여 계산을 수행하는 class 문법을 만들고 숫자를 입력하면 아래와 같은 출력 값을 얻을 수 있다.

try, except를 통해 발생할 수 있는 오류를 처리 할 수 있다.

class Calc:
    def __init__(self):
        self.num1 = int(input("숫자 : "))
        self.num2 = int(input("숫자 : "))

    def plus(self):
        return self.num1 + self.num2
    def minus(self):
        return self.num1 - self.num2
    def multiple(self):
        return self.num1 * self.num2
    def divide(self):
        return self.num1 / self.num2

calc = Calc()
print(calc.plus())
print(calc.minus())
print(calc.multiple())
print(calc.divide())

# 숫자 : 20
# 숫자 : 10
# 30
# 10
# 200
# 2.0

 

하지만 숫자 0을 입력하거나 문자를 입력하면 에러가 발생한다.

# 0을 입력 했을 때
ZeroDivisionError: division by zero

# 문자를 입력 했을 때
ValueError: invalid literal for int() with base 10: 'a'

 

이럴 때 try/except를 사용하면 에러가 발생했을 때 문제를 처리할 수 있다.

0을 입력 했을 때 생기는 에러에는 ZeroDivisionError를 사용하여 0으로 나눌 수 없다는 print를 해주고

문자를 입력 했을 때 생기는 에러에는 ValueError를 사용하여 숫자만 입력 가능하다는 print를 해준다.

그 밖에 통틀어 except만 사용하여 에러 발생시 수행문을 만들어 줄 수도 있고

다양한 에러를 처리할 수 있다.

class Calc:
    def __init__(self):
        self.num1 = int(input("숫자 : "))
        self.num2 = int(input("숫자 : "))

    def plus(self):
        return self.num1 + self.num2
    def minus(self):
        return self.num1 - self.num2
    def multiple(self):
        return self.num1 * self.num2
    def divide(self):
        return self.num1 / self.num2

try:
    calc = Calc()
    print(calc.plus())
    print(calc.minus())
    print(calc.multiple())
    print(calc.divide())

except ZeroDivisionError:
    print("0으로 나눌 수 없습니다")

except ValueError:
    print("숫자만 입력 가능합니다")

댓글