예외 처리
-특징
- 오류 회피하기 - pass
- 외부 데이터를 가져올 때는 예외처리를 해줘야 한다.
- 버그
1. 버그 찾기 (어떤 상황에서 얼마나 잦은 빈도로 어떻게 발생하는가에 대해서 분석)
2. 버그 해결
3. 버그 재발 방지
1. try - except 문 (오류 예외 처리)
1.1 기본 구조
try: ....
except : .....
1.2 발생 오류만 포함
try: .....
except 발생 오류:
1.3 발생 오류와 메세지 변수를 포함
try: .....
except 발생 오류 as 오류 메세지 변수 :
복수 에러 처리 -> except (발생오류1, 발생오류2, ... ) as 오류 메세지 변수 :
4를 0으로 나누면 -> ZeroDivisionError가 발생
ex) try : 4/0
except ZeroDivisionError as e: print(e)
2. try-finally 문 (오류 예외 처리)
finally절은 try문 수행 도중 예외 발생 여부에 상관없이 항상 수행된다.
보통 finally는 사용한 리소스를 close 할 때 사용한다.
try: ....
finally: ....
3. 오류 일부러 발생시키기 (rasie)
3.1 반드시 꼭 구현하도록 하고 싶은 경우
def sum(self):
rasie NotplementdError
-> 반드시 함수를 구현하도록 설정
NotplementdError -> 꼭 작성해야하는 부분이 구현되지 않았을 경우 일부러 오류 발생하기 위해 사용
3.2 예외 만들기
3.2.1 예외처리할 클래스로 예외 만들기
class 이름(Exception):
pass
로 예외처리할 클래스 생성
def sum(name):
if 조건식:
raise class이름()
-> 해당 조건식에 해당하면 class 이름의 오류가 발생한다.
-> 오류 예외 처리로 해결
try:
sum(name)
except class이름:
print( '에러 발생')
3.2.2 Exception 안에 예외 저장하기
try : ....
if 조건식 :
raise Exception('예외 발생 1')
except Exception as 변수 :
print('예외발생 2', e)
-> Exception의 에러메세지는 변수에 들어갔음
-> 만약 조건식에 해당 될 때 결과 값 : 예외 발생2 예외 발생 1
traceback
- 파이썬의 코드 실행 경로를 담고 있는 패키지
- 예외처리시 에러가 어디서 났는지에 대해 자세히 알 수 있게 해줌
import traceback
trt:
....
except:
traceback.print_exc()
에러 코드 읽기
- Traceback : 에러 경로를 알려주겠다. (경로는 밑에서 위로) *결정적인 부분은 맨 아래
- Syntax error (신텍스 에러 ) : 잘못된 문법
- zero division error : 0으로 나누기를 하였을 때
- import error : import 이름이 잘못 되었을 때
- Recursion error : 재귀 오류 (무한 루프)
'Python > 기본 문법 내용 정리' 카테고리의 다른 글
데이터 분석 (0) | 2022.06.23 |
---|---|
+ 스태틱/인스턴스 함수와 메서드와 매직 메서드 (0) | 2022.01.28 |
클래스 (0) | 2021.07.15 |
함수와 파일 입출력 (0) | 2021.07.14 |
제어문 (0) | 2021.07.13 |