반응형

예외처리란 ?

문법 또는 여러가지 이유로 오류가 발생하지만 오류를 무시하고 싶을 때 파이썬은 try, except를 사용해서 예외적으로 오류를 처리할 수 있게 해주는 것이 예외처리 입니다.

 

예외처리 형식은 다음과 같습니다.

try:
    실행할 소스코드
except [발생 오류[as 오류 메시지 변수]]:
    오류 일경우 출력 하고 싶다면 작성

예제 ZeroDivisionError - 0으로 나눌경우 예외처리

# 예외처리 try ~ except

def divide(a,b):
    return a / b


try:
    #c = divide(5,2)
    c = divide(5,0)

except ZeroDivisionError:
    print('두번째 숫자는 0을 빼고 주세요')


print('종료')


출력 결과

작업 후
두번째 숫자는 0을 주지 마시오
종료

 

소스코드에서 다음과 같은 함수를 주었습니다. 

a / b 의 계산을 하는데 0으로 나눌경우 ZeroDivisionError라는 예외처리를 하였습니다.

c = divide(5,0)을 작성할 경우 5 나누기 0을 의미하는 거이기 떄문에 위의 에러로 인한 예외처리가 발생하였습니다.

 

0이 아닌 divide(5,2)를 주면 출력 결과는 당연히 예외처리 부분을 제외한 나머지가 출력될 것입니다.

 

예외처리 IndexError - 참조 범위 오류

# 예외처리 try ~ except

def divide(a,b):
    return a / b

try:

    aa = [1,2]
    print(aa[0])

except IndexError as e:
    print('참조 범위 오류 : ', e)
    
except Exception as err:
    print('기타에러' + str(err)) 

print('종료')

 

이번에는 참조 범위를 벗어나면 예외처리를 해보겠습니다. 배열 aa는 1과 2를 저장하였고,

print 출력에서 0번째를 출력하도록 하였습니다. 

 

현재는 출력하면 1이 출력될 것입니다.

 

하지만 다음과 같이 바꿔주면

print(aa[3])

aa배열의 3번째는 없기때문에

다음과 같은 예외처리가 발생합니다.

 

finally

 

finally문은 try 수행 도중 예외 발생 여부에 상관없이 수행되는 문장입니다.

보통 close해야 할 때에 많이 사용합니다.

 

형태는 다음과 같습니다.

try:
	소스코드
    
except Exception as e:
    print('err : ' + e) 
    
finally:
    cursor.close()
    conn.close()
반응형

'python' 카테고리의 다른 글

python - Thread ( 스레드 ) (1)  (0) 2020.05.14
python - DataBase 연동 & SQL 작업  (0) 2020.05.13
python - OS & pickle  (0) 2020.05.11
python - 상속 (2)  (0) 2020.05.10
python - 상속  (0) 2020.05.10

+ Recent posts