Python_TIL_10

Hanbin Lee·2021년 11월 20일
0

Python_TIL

목록 보기
10/10
post-thumbnail

파이썬의 에러 핸들링을 위한 예외처리에 대해 공부하고 내용을 정리하려 한다.

예외처리

파이썬에는 여러 에러 메세지들이 있다. ValueErro ZeroDivisionError 등등.. 에러가 발생하면 실행은 중단되고, 에러 메세지를 띄운다. 그런다음 에러를 고치고 다시 실행을 시켜주어야한다.
예상되는 에러를 효율적으로 처리하기위해 예외처리를 해야한다.
Javascript에서는 try catch 문을 사용했었지만. 파이썬에서는 try except 문을 사용한다.

try except

기본 형태

try:
  내용
except 에러 이름 as err:
  에러 핸들링

예상되지 않는 에러에 대해서는 Exception를 사용하면 된다.

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:
  print(err)
except Exception as err:
  print("알 수 없는 에러가 발생하였습니다.")
  print(err)

본인이 예상되는 상황 또한 에러처럼 헨들링이 가능하다.
Exception 객체를 상속받아 클래스로 만들면 된다.
기본 형태

class 이름(Exception):
  def __init(self):

  def __str__(self):  

__str__메서드를 사용해 원하는 메세지를 출력하게 할 수도 있다.

class BigNumberError(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 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)

finally

코드를 실행하고 난 뒤 실행되는 메서드이다.
프로그램이 종료되면 해당 메서드의 내용이 출력된다.
기본 형태

try:
  내용
finally:
  종료 이후 실행
class BigNumberError(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 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)
finally:
  print("계산기를 이용해 주셔서 감사합니다.")

REFERENCE

나도코딩 유튜브
Python - 공식문서
점프투파이썬 - WikiDocs

profile
안녕하세요 백엔드 개발자 이한빈 입니다 :)

0개의 댓글