예외처리 (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 라는 오류가 발생하게 되는데, 이를 전과같이 예외처리를 활용하면 “숫자를 입력하세요”가 출력되는걸 볼 수 있다.
이처럼 예외처리는 이유가 명확한 오류의 처리를 예외적으로 해줄 수 있다.
Author And Source
이 문제에 관하여(예외처리 (Python)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@lob3767/예외처리-Python저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)