[Python] 예외처리

1 minute read

[Python] 예외처리

Inflearn Study


링크: https://www.inflearn.com/

  • 인프런에서 “파이썬 무료 강의 (기본편) - 6시간 뒤면 나도 개발자” 강의를 들으며 혼자 공부한 내용입니다.

예외 처리


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)
except Exception as err: # 나머지 모든 에러 -> 에러 이름을 모르겠을 때 사용
    print(err)
finally:
    print("계산기를 이용해주셔서 감사합니다.")
  • try : 예외가 발생할 수 있는 코드
  • except : except뒤에 발생할 수 있는 에러의 이름 작성
    • 에러 발생 시 프로그램이 종료되지않고 별도로 처리가 가능합니다.
  • finally : 에러가 발생하든지 정상적으로 try문이 실행되든지 간에 항상 실행되는 부분입니다.

에러 발생시키기


try:
    print("한 자리 숫자 나누기 전용 계산기입니다.")
    num1 = int(input("첫 번째 숫자를 입력하세요. : "))
    num2 = int(input("두 번째 숫자를 입력하세요. : "))
    if num1 >= 10 or num2 >= 10:
        raise ValueError
    print("{0} / {1} = {2}".format(num1, num2, int(num1 / num2)))
except ValueError:
    print("잘못된 값을 입력하였습니다. 한 자리 숫자만 입력하세요.")
  • raise : 사용자가 직접 에러를 발생시키는 기능입니다.

사용자 정의 예외 처리


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("계산기를 이용해주셔서 감사합니다.")
  • Exception 클래스를 상속받은 BigNumberError 라는 클래스를 생성
  • __str__ : 객체가 print함수에 전달될 경우 객체 내부의 메시지 리턴
  • try문에서 한 자리 숫자가 아닌 두 자리 숫자가 입력된 경우 BigNumberError를 발생시킵니다.

Leave a comment