<플레이데이터>부트캠프의 기록/Python

Python_10 : 예외처리 (파이썬)

EZ_SOO 2022. 7. 15. 19:41
예외처리

 

 

예외란?

  • 일반적으로 오류 혹은 에러라고 불리운다.
  • 프로그램 실행 중 예외가 생기면 비정상종료가 되는데 이것을 막기위해, 에러(예외)가 발생된 이후의 문장은 정상적으로 수행하도록 처리하는 것을 '예외처리'라고 한다.
  • 예외라고 해서 다 예외처리를 할 수 있는 것이 아니라, '컴파일 에러'가 아닌 '런타임 에러 일때 예외 처리가 가능하다.

 

 

 

 

1. 컴파일 에러

  • REPL Read 에서 Evaluation 사이에 즉, 번역할때 생기는 에러
  • 이때에는 문법적인 오류기 때문에 예외 처리를 할 수 없다.
  • 예를 들면 개발자의 실수(오타)등을 말할 수 있다.

2. 런타임 에러

  • 프로그램 실행 중(프로세스) 상태에서 발생하는 에러
  • 문법적인 번역이 끝난 상태에서 실행도중 문제가 발생하는 경우
  • 결과가 도출될 때 발생하는 오류. 이때에는 에러처리를 할 수 있다.

 

 

내가 만든 코드의 예를 보며 예외처리를 알아보자!

 

우선 코드를 설명하자면 input을 이용해 사용자에게 양수를 입력받으면, 그것이 짝수인지 홀수인지 걸러내는 코드이다.

1. 변수 a를 통해 사용자에게 양수를 입력받는다.

2. if a<0: 만약 음수를 썼을때는 '양수를 입력해주세요'라고 실행될 수 있도록 했다.

3. if a>0: 우선 양수의 숫자를 걸러내고,

3-1. ' if a%2 == 0: ' 3번에서 걸러진 숫자가 짝수라면 /'짝수' 입니다/ 를 실행

3-2. ' if a%2 != 0: ' 3번에서 걸러진 숫자가 홀수라면  /'홀수' 입니다/ 를 실행

 

 

 

과연 숫자를 넣으면 어떻게 작동할까?

 

 

1. 음수를 넣었을 때

첫번째 if a<0 에 걸려 '양수를 입력해주세요'가 출력되었다.

 

 

2. 짝수를 넣었을 때

짝수 2를 넣었을 때  if a>0 에 들어가고, if a%2 == 0:으로 들어가서 넣었던 '숫자와 짝수입니다'가 출력되는 것을 볼 수 있다.

 

 

3. 홀수를 넣었을 때

3을 넣었을때는 마찬가지 방법으로 if구문을 타고 들어가서 elif구문을 통해 숫자와 홀수가 나오는 것을 알 수 있다.

 

 

 

4. 그런데!! 만약 사용자가 '숫자가 아닌 무언가'나 '실수'를 넣었을때는 어떻게 될까?

 

- 문자를 넣었을 때

-실수를 넣었을 때

위에서 볼 수 있듯 에러가 나는 모습을 볼 수 있다. 이렇게 되면 실행문이 실행되지 않고 그냥 오류문으로 끝나게 된다.

이럴때 프로그램이 작동할 수 있도록 도와주는 것이 바로 '예외처리' 이다.

 

<예외처리를 하는 방법> 

try:
	예외가 발생할 가능성이 있는 코드

except:
      예외가 발생할 때 실행할 코드
      
else:
      잘 실행되면 실행할 코드
      
finally:
      예외가 있든 없든 반드시 실행되는 코드

 

 

위의 방법을 사용하여 아까만든 나의 코드를 예외처리로 만들어 보자!

위에 표에 넣어둔 예외처리 방법대로 try안에 예외가 발생할 수 있는 코드를 넣어주었고, except에 예외가 발생했을때

처리할 수 있는 코드를 넣어주었다. 그래서 문자를 넣었을 때 사용자에게 값을 입력받았는데 그것이 다음 if 구문으로 

넘어갈 수 없는 오류 였기때문에 except구문으로 넘어가 '실수나 숫자가 아닌것을 입력하셨습니다. 다시 입력해주세요!"

가 출력된 것을 볼 수 있다.

 

이렇게 if구문을 통해 만들었던 것은 try를 통해 한칸 더 들여써주고 그 안에서 발생할 오류를 대비해 except구문을 만들면

오류가 생겨도 프로그램을 마무리 할 수 있게된다.

 

-else 와 finally

위에서 설명한 것 처럼 else구문은 실행이 잘 되었기 때문에 실행한 값아래에 출력되었고 finally구문은 예외와 상관없이

출력됨을 알 수 있다.

 

-음수를 넣었을 때도!

 

-문자를 입력했을때도!