[플레이데이터 빅데이터 부트캠프]Python 예외처리

  • 예외란? 일반적으로 오류 혹은 에러라고 불리웁니다.
  • 프로그램 실행 중에 예외가 발생하면 '비정상종료'가 되는데요
  • 비정상 종료를 막기 위해서 에러가 발생된 이후의 문장은 정상적으로 수행하도록 처리하는 방법을 예외처리라고 부릅니다.

전통적인 if-else문 뿐만 아니라 try except 구문으로 예외처리를 할 수 있다.

if-else 문

# 과거의 예외처리 방식 - 모든 경우를 고려해서 예외를 처리
number = input("정수를 입력하시오: ")
if number.lstrip('-').isdigit() == True: # lstrip('-')으로 음수도 판별
    print(number)
    print("정수입니다")
else:
    print("정수가 아닙니다")

try exept 구문

# 현재의 예외처리 방식 - 에러 나면 실행은 되도록 일단 넘김
# try-except

try:
    number = input("정수를 입력하시오: ")
    if number.lstrip('-').isdigit() == True: # lstrip('-')으로 음수도 판별
        print(number)
        print("정수입니다")
except:
    print("정수가 아닙니다")

 

try except 구문을 활용하여 입력한 값이 정수가 아닌지 구분하기

try:
    strs = int(input('정수를 입력하세요'))
    print(strs)
except:
    print('정수로 변환할 수 없는 문자열을 입력하셨습니다.')

 

try except  as e 구문

try except as e구문을 활용하여, 예외별로 정확한 에러 메시지를 확인해볼 수 있다.

def convert(a):
        try:
            return (int(a))
        # except Exception:
        #     return 'Exception'
        # except BaseException:
        #      return 'BaseException'
        except TypeError:
            return 'TypeError'
        except NameError as e: # as/e - error 메시지를 출력
            return 'NameError', e
        except ValueError as e:
            return 'ValueError', e
        except Exception as e:
            return 'Exception', e
convert([])
'TypeError'
convert('가')
('ValueError', ValueError("invalid literal for int() with base 10: '가'"))
convert('')
('ValueError', ValueError("invalid literal for int() with base 10: ''"))