룰루랄라 즐기자 2018. 2. 14. 19:04

예외처리 try except


에러 예제1)

REPL에서 자주발생하는 에러

list = [] 변수를 만들고

list[0] 이라고 입력을 하면

아래와 같이 IndexError 가 발생합니다.

IndexError = 색인오류



에러 예제2)

text = 'abc' 라는 변수를 만들고

number = int(text)   text라는 변수값을 숫자로 바꾸라(int)는 의미인데

ValueError라고 나옵니다.

abc는 문자이기 때문에 숫자로 바꿀수 없어서 오류가 뜹니다.




위와 같이 에러가 뜨게 되는데, 이러한 에러가 뜨는경우를 미리 예측해서

에러가 뜰시에 아래와 같은 문구를 미리 입력하여 출력시킬 수 있습니다.



text = '100%'  text변수값을 순수한 숫자가 아닌 100%로 입력을 하고

number = int(text) text변수값을 숫자로 변환하는 int 함수를 이용하여 변환시

100%는 순수한 숫자가 아니기 때문에 에러가 발생합니다.

이럴 때


text = '100%'

try:

number = int(text)

except ValueError:

print('{ }는 숫자가 아니네요.'.format(text))


를 이용하여 특정에러(여기에선 ValueError)가 발생시 문구를 출력시킬 수 있습니다.






이번에는

list 리스트값중에 index 몇번째값을 가져오라~ 라는 내용의 소스를 이용

try except 문구와 접목시켜보겠습니다.

list 1,2,3 에서 index 5번째의 값을 pop제거하고 출력하라는 의미입니다.

아시다시피 0번째, 1번째, 2번째 값까지는 있는데, 5번째 값이 없기 때문에

오류가 발생하게 됩니다.






그런데 위의 경우에는 꼭 try except 문이 아니더라도, if문으로도 처리가 가능합니다.

아래를 보시죠!

if index값이 len(list) 리스트의 길이보다 작을경우에는 출력을 하고

그렇지않으면 에러메세지를 띄우면 됩니다. 







아래같은 경우에는 try except 를 반드시 써야 하는경우도 있습니다.

my_module을 임포트 하는데 임포트할수 없으면 에러를 출력