본문 바로가기

Programming

파이썬 예외처리

728x90
반응형

예외(Exception)란?

예상 가능한 예외 또는 예상이 불가능한 예외로 나눌 수 있다. 

예상 가능한 예외

예상 불가능한 예외

발생 여부를 사전에 인지할 수 있다

개발자가 반드시 명시적으로 정의해야 한다

예를들어 사용자의 잘못된 입력, 파일이 없는 경우가 있을 수 있다
개발자 실수로 실행 시 발생하는 예외

예를들어 리스트 범위를 넘어가는 값 호출, 정수0으로 나누는 것들이 있다.

 

예외처리

예외가 발생할 경우 후속 조치 등의 대처가 필요한다. 프로그램도 제품이기 때문에 모든 잘못된 상황에 대해 대처해야 한다.


예외처리 (Exception Handling)

문법

try - except - else - finally
try:
	#예외 발생 가능 코드
except <Exception Type>:
	#예외 발생시 대응하는 코드
else:
	#예외가 발생하지 않을 때 동작하는 코드
finally:
	#예외 발생 여부와 상관없이 실행됨
raise
raise <Exception Type> (예외 정보)
assert
assert 예외조건

 

Built-in Exception 

파이썬에서 기본적으로 제공하는 예외. 

Exception 이름 내용
IndexError List의 index 범위를 넘어갈 때
NameError 존재하지 않은 변수 호출 시
ZeroDevisionError 0으로 숫자를 나누는 경우
ValueError 변환할 수 없는 문자/숫자 변환 시
FileNotFoundError 존재하지 않는 파일 호출 시

 

예제

1. built-in exception 사용

for i in range(10):
    try:
        print(i, 10//i)
    except ZeroDivisionError: # built-in 에러
        print('Not divided by 0')

 

2. except 세분화 

a = [1,2,3,4,5]
for i in range(10):
    try:
        print(i, 10//i)
        print(a[i])
    except ZeroDivisionError: # built-in 에러
        print('Not divided by 0')
    except IndexError as e:
        print(e)
    except Exception as e: # 지정하지 않은 value error -> 하지만 권장하지 않음
        print(e)

 

3. raise

while True:
    value = input('변활할 정수값을 입력 해 주세요')
    for digit in value:
        if digit not in '0123456789':
            raise ValueError('숫자값을 입력하세요')
    print('정수값으로 변환된 숫자 - ', int(value))

 

4. assert

def get_binary_nubmer(decimal_number):
    assert isinstance(decimal_number, int)
    return bin(decimal_number)

 


boost 코스의 인공지능 기초 다지기 강좌를 듣고 정리한 내용입니다.

https://www.boostcourse.org/ai100/lecture/739173?isDesc=false 

 

인공지능(AI) 기초 다지기

부스트코스 무료 강의

www.boostcourse.org

 

728x90
반응형