[Python] 7. 예외처리

[Python] 7. 예외처리

1. try, except, raise

1) 오류

  • SnytaxError
  • IndentationError
  • TapError
  • 등등 많은 오류가 있음.
  • 에러코드를 잘 모르겠다면 검색을 통해 해결!
  • 예외처리를 통해 어느정도 에러를 예방 가능

2) 예외처리

  • try, except 형식
  • 간단하게 예외처리를 할 수 있음.
  • 예외처리가 필요한 부분이 어디인지 확실하게 파악한 후 사용.
try: 
    예외가 발생할 가능성이 있는 코드
except:
    예외가 발생했을  실행할 코드
# except (예외처리)

def division():
    try:
        num1 = int(input("첫번째 정수를 입력해 주세요 : "))
        num2 = int(input("두번째 정수를 입력해 주세요 : "))

        return print(f"{num1}{num2}로 나눈 값은 {int(num1)/int(num2)}입니다.")
    except:
        print("0이 아닌 숫자로된 정수를 입력해주세요.")

division()
  • finally 사용
# except (예외처리2)
def division():
    try:
        num1 = input("첫번째 정수를 입력해 주세요 : ")
        num2 = input("두번째 정수를 입력해 주세요 : ")

        return print(f"{num1}{num2}로 나눈 값은 {int(num1)/int(num2)}입니다.")
    except Exception:
        print("오류 발생.")
    finally:
        print("정상적으로 나누기 함수가 호출되었습니다.!")   # 결과값에 상관없이 실행됨.
division()
  • 사용자가 직접 예외를 발생시키는 방법
  • raise
# raise
# 화장실이 너무 급한남자

class Toilet:
    def __init__(self):
        self.using = False # 화장실 사용x
    
    def in_use(self):
        if self.using == False:
            print("화장실을 사용합니다!")
            self.using = True
        else:
            raise Exception("안에 사람이 있습니다. 잠시 기다려주세요.")
        
    def not_in_use(self):
        self.using = False
        print("안에 사람이 없습니다. 이용이 가능합니다.")

man = Toilet()

while True:
    use = input("화장실을 사용하시겠습니까? (Y/N)")
    try:
        if use == "Y":
            man.in_use()
        else:
            man.not_in_use
    except Exception as e:
        print(e)