예외처리
예외란?
- 일반적으로 오류 혹은 에러라고 불리운다.
- 프로그램 실행 중 예외가 생기면 비정상종료가 되는데 이것을 막기위해, 에러(예외)가 발생된 이후의 문장은 정상적으로 수행하도록 처리하는 것을 '예외처리'라고 한다.
- 예외라고 해서 다 예외처리를 할 수 있는 것이 아니라, '컴파일 에러'가 아닌 '런타임 에러 일때 예외 처리가 가능하다.
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구문은 예외와 상관없이
출력됨을 알 수 있다.
-음수를 넣었을 때도!
-문자를 입력했을때도!
'<플레이데이터>부트캠프의 기록 > Python' 카테고리의 다른 글
Python_12 : Numpy) reshape에서 -1의 의미 (파이썬) (0) | 2022.07.19 |
---|---|
Python_11 : Parameter(파라미터) & Arguments (아규먼트) (0) | 2022.07.18 |
Python_8 : 재귀 함수 (파이썬) (0) | 2022.07.13 |
Python_7 : 함수 만들기 (파이썬) (0) | 2022.07.12 |
Python_6 : 출력 문자열 꾸미기 (파이썬) (0) | 2022.07.11 |