728x90
728x90
Error
1. 실행전 Error => 구문에러( SyntaxError ) = 문법적인 문제가 발생
2. 실행중 Error => 예외( Exception, RuntimeError )
==> 예외처리해줄 수 있음 ( Exception handling = 조건문 or try except 구문 )
Error list
- AssertionError: assert 문이 제대로 작동하지 않을 때 발생합니다.
- IndexError: 참조 하려는 인덱스가 범위를 벗어날 때 발생합니다.
- KeyError: 참조 하려는 키가 기존 키 집합에서 찾을 수 없을 때 발생합니다.
- KeyboardInterrupt: 사용자가 인터럽트 키(Control + C, 혹은 Delete)를 누를 때 발생하며, 모든 Exception을 잡는 코드에 의해 인터프리터가 종료하는 것을 막지 못하도록 Exception 상위에 있는 BaseException을 직접 계승 합니다.
- MemoryError: 메모리가 부족하지만, 가비지 컬렉터가 일부 객체의 삭제를 함으로써 복구될 수 있는 경우 발생합니다.
- NameError: 참조하는 지역, 전역 변수 혹은 함수, 클래스 등을 찾을 수 없을 때 발생합니다.
- OSError: 시스템 함수가 시스템 관련 에러를 돌려줄 때 발생합니다. (파일을 찾을 수 없거나, 디스크가 찼거나..)
- OverflowError: 산술 연산의 결과가 너무 커서 표현 할 수 없을 때, 혹은 정수 범위를 벗어났을 때 발생합니다.
- RecursionError: 최대 재귀 깊이가 초과하였을 때 발생합니다.
- TypeError: 연산이나 함수가 부적절한 데이터 타입의 객체에 적용 되었을 때 발생합니다.
- ValueError: 연산이나 함수가 부적절한 값을 가진 객체에 적용 되었을 때 발생합니다.
- ZeroDivisionError: 나누기, 나머지 연산의 두 번째 인자가 0일 때 발생합니다.
- 참조 : https://justkode.kr/python/try-except
try, except 구문
except - if, elif, else 조건문처럼 차례대로 오류 검출
예외도 클래스 상속으로 구현되며 다음과 같은 계층으로 이루어져 있습니다.
보통 파이썬에서 새로운 예외를 만들 때는 Exception을 상속받아서 구현합니다.
참조 : https://wayhome25.github.io/python/2017/02/26/py-12-exception/
try:
예외가 발생할 가능성이 있는 코드가
except: 예외종류 as 할당 변수지정 # ==> class
예외가 발생했을 때 실행할 코드
else: # try 문이 에러 발생 없이 정상적으로 실행 되었을 때, else 문을 실행
예외가 발생하지 않았을 때
finally: # except 문이 실행 됐든, 안 됐든 상관없이, finally문을 실행
무조건 실행할 코드
# case1
try:
예외가 발생할 가능성이 있는 코드가
finally:
무조건 실행할 코드
# case2
try:
예외가 발생할 가능성이 있는 코드가
except: 예외종류 as 할당 변수지정 # ==> class
예외가 발생했을 때 실행할 코드
# case3
try:
예외가 발생할 가능성이 있는 코드가
except: 예외종류 as 할당 변수지정 # ==> class
예외가 발생했을 때 실행할 코드
else: or finally:
예외가 발생하지 않았을 때
# case4 ==> SyntaxError 나옴
try:
예외가 발생할 가능성이 있는 코드가
else: or finally:
예외가 발생하지 않았을 때
* 프로그램 실행 오류 중 NameError가 있다면
try:
예외가 발생할 가능성이 있는 코드가
except ValueError:
pass # ==> 해당에러는 pass 시킨다
except IndexError:
.
.
. # 프로그램이 죽어
except exception: # ==> exception쓰면 프로그램 죽지 않는다
raise 구문 = 예외 강제 발생
raise 예외('메세지')
구현되지 않은 부분이므로 확실하게 문제발생시키기
이 부분을 그냥 넘어가면 문제가 발생하니 강제 종료
try:
x = int(input('3의 배수를 입력하세요: '))
if x % 3 != 0: # x가 3의 배수가 아니면
raise Exception('3의 배수가 아닙니다.') # 예외를 발생시킴
print(x)
except Exception as e: # 예외가 발생했을 때 실행됨
print('예외가 발생했습니다.', e)
# 3의 배수를 입력하세요: 5 (입력)
# 예외가 발생했습니다. 3의 배수가 아닙니다.
## raise로 예외를 발생시키면 raise 아래에 있는 코드(print(x))는 실행되지 않고 바로 except로
참조 : https://dojang.io/mod/page/view.php?id=2398
## 가정 설정문 assert
https://cord-ai.tistory.com/180
728x90
'IT 개인학습 > Python' 카테고리의 다른 글
Python 내장함수 및 라이브러리 (0) | 2022.05.07 |
---|---|
Python에서 시간 측정하기(Decorator, Command line) (0) | 2021.09.26 |
Class 상속(inheritance) (0) | 2021.07.18 |
매직메소드 (0) | 2021.07.18 |
Class , Object , Method ( OOP ) (0) | 2021.07.18 |
댓글