예외처리 (Python)

Python의 예외처리

python으로 코딩 중, 전에 배웠던 예외처리가 잘 기억나지않아 복습한 내용이다.
유튜브에 있던 간단한 예제를 작성해보았다.


class Calculator:
    def setdata(self, num1, num2):
        self.num1 = num1
        self.num2 = num2

    def div(self):
        result = self.num1 / self.num2
        return int(result)

a = Calculator()
a.setdata(4, 2)
print(a.div())

>>> 2

'나누기 전용계산기'라는 예제인데, Calculator라는 간단한 class를 만들어 보았다.
원래 예제에서는 class 로 만들지 않았지만, 내 자신이 아직 class에 대한 공부가 부족하다고 판단하여 class에 익숙해지고자 이렇게 작성하였다.

class Calculator:
    def setdata(self, num1, num2):
        self.num1 = num1
        self.num2 = num2

    def div(self):
        result = self.num1 / self.num2
        return int(result)

a = Calculator()
a.setdata(4, 0)
print(a.div())

>>> Traceback (most recent call last):
    result = self.num1 / self.num2
ZeroDivisionError: division by zero

나누는 값을 0으로 하였을 경우, 수식에서는 원래 0으로는 나눌 수 없기에 이렇게 ZeroDivisionError 라는 오류가 발생한다.

이와같은 오류는 우리가 먼저 인지할 수 있고, 오류에대한 이유도 명확하기 때문에 이럴때 예외처리를 사용할 수 있는것이다.

try:
    class Calculator:
        def setdata(self, num1, num2):
            self.num1 = num1
            self.num2 = num2

        def div(self):
            result = self.num1 / self.num2
            return int(result)

    a = Calculator()
    a.setdata(4, 0)
    print(a.div())

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

>>> 0으론 나눌수 없습니다.

try 블록 수행중 오류가 발생하게 되면 except 블록이 수행된다. 하지만 try 블록에서 오류가 발생하지 않는다면 except 블록은 수행되지 않는다.

따라서 위에 코드에서 우리가 except 에서 지정해둔 ZeroDivisionError 라는 오류가 발생되었기 때문에, except 블록이 수행되어 "0으론 나눌수 없습니다." 가 출력된걸 볼 수있다.

try:
    class Calculator:
        def setdata(self, num1, num2):
            self.num1 = num1
            self.num2 = num2

        def div(self):
            result = self.num1 / self.num2
            return int(result)

    a = Calculator()
    a.setdata(4, "빵")
    print(a.div())

except ZeroDivisionError :
    print("0으론 나눌수 없습니다.")
except TypeError : 
    print("숫자를 입력하세요.")

>>> 숫자를 입력하세요.

이번에는 두번째 인자에 숫자가 아니라 “빵”이라는 문자를 입력했을 경우
TypeError 라는 오류가 발생하게 되는데, 이를 전과같이 예외처리를 활용하면 “숫자를 입력하세요”가 출력되는걸 볼 수 있다.

이처럼 예외처리는 이유가 명확한 오류의 처리를 예외적으로 해줄 수 있다.

좋은 웹페이지 즐겨찾기