Backend/Python

Python 파이썬 예외 처리 try except

쏠솔랄라 2023. 7. 6. 09:44

 

 

예외


: 외부적인 요인으로 인해 발생되는 에러
프로그램 실행 도중에 발생되는 에러

에러
문법상의 문제
프로그램이 실행되지 않는다

예외 처리
예외 발생시 프로그램 오류를 처리하는 구문

 

 

try 예외 감시 영역 필수
except 예외 처리 영역 필수
finally 필수코드 선택
else 예외가 발생하지 않을 경우 실행되는 영역 선택



import traceback

while True:    
    try:
        a = int(input("정수 입력 : "))
        b = int(input("정수 입력 : "))  
    except:
        print("정수만 입력하셔야 합니다.")

    try:
        print("{} + {} = {}".format(a,b,a + b))
        print("{} - {} = {}".format(a,b,a - b))
        print("{} × {} = {}".format(a,b,a * b))
        print("{} ÷ {} = {}".format(a,b,a / b))
    except:
        print("0으로 나눌수 없습니다.")

 

 

출력화면

 

 

예외처리

 

 

예외처리는 중첩이 가능하다

 

 

while True:    
    try:
        a = int(input("정수 입력 : "))
        b = int(input("정수 입력 : "))
        try:
            print("{} + {} = {}".format(a,b,a + b))
            print("{} - {} = {}".format(a,b,a - b))
            print("{} × {} = {}".format(a,b,a * b))
            print("{} ÷ {} = {}".format(a,b,a / b))
        except:
            print("0으로 나눌수 없습니다.")  
    except:
        print("정수만 입력하셔야 합니다.")

 

 

예외 처리를 할때 except를 여러개 놓고 처리할수 있다

except:
:예외 종류와 상관 없이 처리될수 있게 만든 구문

except 예외클래스:
: 해당 예외와 일치되어야 실행되는 구문

except 예외클래스 as 변수: 
: 해당 예외와 일치되어야 실행되는 변수에 오류메세지를 저장한다

-> 모든 예외를 처리하는 except는 항상 가장 마지막에 있어야 한다


while True:    
    try:
        a = float(input("정수 입력 : "))
        b = float(input("정수 입력 : "))
        print("{} + {} = {}".format(a,b,a + b))
        print("{} - {} = {}".format(a,b,a - b))
        print("{} × {} = {}".format(a,b,a * b))
        print("{} ÷ {} = {}".format(a,b,a / b))
    except ZeroDivisionError as zero:
        print("0으로 나눌수 없습니다.")
        print(type(zero))
        print(zero)
    except ValueError as value:
        print("정수만 입력하셔야 합니다.")
        print(value)
    except:
        print("예외")

 

 

지정한 예외 클래스들을 하나의 목록으로 묶을수도 있다

 

 

while True:    
    try:
        a = int(input("정수 입력 : "))
        b = int(input("정수 입력 : "))
        print("{} + {} = {}".format(a,b,a + b))
        print("{} - {} = {}".format(a,b,a - b))
        print("{} × {} = {}".format(a,b,a * b))
        print("{} ÷ {} = {}".format(a,b,a / b))
    except (ZeroDivisionError,ValueError) as e:
        print(e)
    finally:
        print("쉬는시간 다 되 간다!")

 

 

else

 

제일 마지막에 실행되는 구문이므로 항상 제일 마지막에 적어야 한다
else 는 try 구문이 정상적으로 실행되었을때만 실행되는 구문

 

while True:    
    try:
        a = int(input("정수 입력 : "))
        b = int(input("정수 입력 : "))
        print("{} + {} = {}".format(a,b,a + b))
        print("{} - {} = {}".format(a,b,a - b))
        print("{} × {} = {}".format(a,b,a * b))
        print("{} ÷ {} = {}".format(a,b,a / b))
    except ZeroDivisionError as zero:
        print("0으로 나눌수 없습니다.")
        print(type(zero))
        print(zero)
    except ValueError as value:
        print("정수만 입력하셔야 합니다.")
        print(value)
    else:
        print("실행")
        if a == 0 or b == 0:
            print("0으로 입력할수 없습니다..")
    finally:
        print("다시 시작")

 

 

강제 예외 발생

 

 

while True:    
    try:
        a = int(input("정수 입력 : "))
        b = int(input("정수 입력 : "))
        if b == 0:
            raise ZeroDivisionError("0을 입력하실수 없습니다.")
        print("{} + {} = {}".format(a,b,a + b))
        print("{} - {} = {}".format(a,b,a - b))
        print("{} × {} = {}".format(a,b,a * b))
        print("{} ÷ {} = {}".format(a,b,a / b))
    except ZeroDivisionError as zero:
        print(zero)
    except ValueError as value:
        print("정수만 입력하셔야 합니다.")