Python : 예외처리
February 22, 2021
예외 처리
사람은 실수할 수 있고 사람이 만든 프로그램에도 실수를 포함 할 수 있다.
실행 중 예기치 않은 문제가 발생 할 수 있다.
사용자 입력을 받을 경우 입력값을 예상할 수 없다.
ex) 점수를 입력하세요 -> 사용자 입력 : 만점, 80점, 왜?, 안알랴줌..등
네트워크나 외부장치도 언제 어떻게 연결이 끊어질지 예상할 수 없다.
try :
실행할 명령
except 예외 as 변수 :
오류 처리문
else :
예외가 발생하지 않을 때의 처리
예외의 종류
자주 발생하는 예외를 미리 정의하고 고유한 이름을 붙여 놓았다.
대표적으로 많이 발생하는 예외는 아래와 같다.
예외의 종류에 따라 적절한 처리 해보기
str = "89"
try :
score = int ( str )
print ( score )
a = str [ 5 ]
excpet ValueError :
print ( "점수의 형식이 잘못되었습니다." )
except IndexError :
print ( "첨자의 범위를 벗어났습니다." )
raise
raise 명령은 고의적으로 예외를 발생시킨다.
작업을 위한 조건이 맞지 않거나 더이상 진행할 수 없는 경우 사용한다.
raise 뒤에 발생시킬 예외의 이름을 넣는다.
1~n 합계를 구하는 함수에서 0보다 큰 인수를 받는 예제
def calcsum ( n ):
if n < 0 :
raise ValueError
sum = 0
for i in range ( n + 1 ):
sum += i
return sum
try :
print ( "~10 =" , calcsum ( 10 ))
print ( "~5 =" , calcsum ( - 5 ))
except ValueError :
print ( "입력값이 잘못되었습니다." )
자원정리
예외 발생 여부와 상관없이 반드시 실행해야 할 명령을 지정한다.
메모리나 지원을 할당한 후 해제해야 할 때 finally 블록에 작성한다.
finally 블록은 예외 발생 여부와 상관없이 항상 실행한다.
네트워크 사용 후 자원을 종료하는 간단한 예제
try :
print ( "네트워크 접속" )
a = 2 / 0
print ( "네트워크 통신 수행" )
finally :
print ( "접속 해제" )
print ( "작업 완료" )
댓글남기기