오류의 종류는 크게 두가지로 나뉜다. 실행 전 발생하는 '구문오류'와 실행 중 발생하는 '예외' 또는 '런타임오류' 이다. 구문 오류는 보통 아래와 같은 문구를 보인고
SyntaxError: EOL while scanning string lilteral
예외나 런타임 오류와 같은 경우 보통 여러가지 문제들이 있겠지만 아래와 같은 문구를 내보낸다.
NameError: name 'list_a' is not defined
이러한 오류들을 해결하는 것을 <예외처리> 라 부르며 예외 처리하는 방법은 다시 조건문을 이용하는 방법 (기본 예외처리)과 try 구문을 사용하는 방법 ( ) 두가지로 나뉜다.
조건문을 이용한 예외처리의 경우 발생가능한 상황을 예측하고 모두 조건문으로 처리하는 것을 말한다. 하지만, 모든 상황을 예측하고 조건문으로 옮길수는 없기에 'try except구문'을 이용하여 예외처리하는 방법이 생겼다.
try :
예외가 발생할 수 있는 코드
except :
예외가 발생했을 때 실행할 코드
예외가 발생할 가능성이 있는 코드를 모두 try 구문안에 넣고 예외가 발생했을때 실행할 코드를 모두 except 구문 안에 넣으면된다.
파이썬의 경우 except 구문 뒤에 예외의 종류를 입력해서 예외를 구분할 수 있다. 예외 구문의 경우 ValueError 와 IndexError 등이 있다.
try :
예외가 발생할 가능성이 있는 구문
except 예외의 종류 A :
예외 A 가 발생했을때 실행할 구문
except 예외의 종류 B :
예외 B 가 발생했을때 실행할 구문
except 예외의 종류 C :
예외 C 가 발생했을때 실행할 구문
++ try except else 구문
try except else 구문을 사용하면 기존의 try except 구문에 '예외가 발생하지 않았을때 실행할 코드'를 추가할수 있다.
try :
예외가 발생할 수 있는 코드
except :
예외가 발생했을 때 실행할 코드
else :
예외가 발생하지 않았을때 실행할 코드
+++ finally 구문
finally 구문을 사용하면 '무조건 실행할 코드'를 추가할수있다!
try :
예외가 발생할 수 있는 코드
except :
예외가 발생했을 때 실행할 코드
else :
예외가 발생하지 않았을때 실행할 코드
finally :
무조건 실행할 코드