파이썬의 예외 처리(try except)
프로그램을 수행하면서 예상하지 못한 여러가지 일들이 발생할 수 있는데 이를 처리하기 위함
예외에는 예상이 가능한 예외와 예상이 불가능한 예외가 있음
1) try~except
try:
(예외 발생 가능한 코드) ~
except (발생가능한 에러종류):
(예외 발생시 대응 가능한 코드)~
ZeroDivisionError말고 다른 에러를 적으면 프로그램 수행이 안됨
파이썬에서 기본적으로 제공하는 indexerror, nameerror, zerodivisionerror, valueerror, filenotfounderror 등이 있음
indexerror를 e로 받아서 print(e)하면 그 정보를 출력해줌
무슨 에러가 발생할지 모르면 지정하지 않아도 알아서 수행해줌
무슨 에러가 날지 모를 때 except Exception as e로 써도 됨
2) try~except~else
try:
(예외가 발생할 수 있는 코드)~
except:
(예외가 발생할때 동작)~
else:
(예외가 발생하지 않을 때 동작)~
3) try~except~finally~
try:
(예외가 발생할 수 있는 코드) ~
except:
(예외가 발생하면 동작하는 코드)~
finally:
(예외와 무관하게 항상 수행하는 코드)~
4) raise
필요한 경우 강제로 exception을 발생시키고 싶을 때가 있음
raise <exception type> (예외정보)를 이용
숫자를 받아야하는데 사람이 문자를 입력한 경우 강제로 오류를 발생시키고 종료시킴
5) assert
특정한 조건을 만족시키지 않으면 예외를 발생시키고 강제 종료시킴
assert (예외조건)
isinstance((변수),(타입)) 변수가 해당 타입을 만족시키면 true 아니면 false
10.0은 int가 아니므로 isinstance(decimal_number,int)가 False여서 assertion 에러 발생
----------------------------------------------------------------------------------------------------------------------------------------------
6) try~except vs. if~else~
try ~ except 구조를 적절하게 if ~ else ~로 치환할 수 있는 경우가 있을 것이다.
이 때 예외 조건이 발생하는 빈도가 적은 경우는 동일한 구조에서 try~except가 더 빠르다고 한다.
100만개 중 10000개가 1이고 99만개가 0인 경우, 0으로 나눌 때 예외 처리(예외 빈도가 많음)
반대로 100만개 중 10000개가 0이고 99만개가 1인 경우, 0으로 나눌 때 예외 처리(예외 빈도가 적음)
'프로그래밍 > Python' 카테고리의 다른 글
Python의 라이브러리인 모듈(module)과 프로젝트(project) (0) | 2021.12.25 |
---|---|
빅데이터 분석기사 실기를 준비하는 사람들에게 드리는 팁(3회 이후) (0) | 2021.12.23 |
enumerate와 zip (0) | 2021.12.19 |
Python의 리스트(list)에 대하여 (0) | 2021.12.19 |
urlopen을 할 때 HTTP Error 403: Forbidden error가 난다면 (0) | 2021.12.19 |