산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Industrial programming >> python

Python 에러와 내장 예외 마스터하기

Python 에러와 내장 예외

Python이 문제를 알리는 방식, 문법 에러와 런타임 에러의 차이, 내장 예외를 자신 있게 다루는 법을 알아봅니다.

동영상: Python 예외 처리

Python 프로그램을 실행할 때 인터프리터는 처리되지 않은 에러를 만나면 즉시 실행을 멈춥니다. 이 에러는 크게 두 범주로 나뉩니다:

  1. 문법 에러(Syntax errors) – 파싱 중 감지되는 문제.
  2. 논리 에러(예외, Exceptions) – 코드 실행 중 발생하는 문제.

Python 문법 에러

문법 에러는 소스 코드가 Python의 문법 규칙을 위반할 때 발생. 인터프리터는 에러 메시지에서 캐럿(^)으로 정확한 위치를 가리킵니다.

> >>> if a < 3
File "<interactive input>", line 1
if a < 3
^
SyntaxError: invalid syntax

이 예에서 if 문 뒤에 콜론(:)이 빠져 SyntaxError 발생.


Python 논리 에러(예외)

논리 에러, 즉 예외는 코드가 문법 검사를 통과한 후에만 드러납니다. 흔한 예:

예외 발생 시 Python은 예외 객체 생성. 처리되지 않으면 트레이스백이 출력되며 호출 스택과 실패 원인 표시.

> >>> 1 / 0
Traceback (most recent call last):
File "<string>", line 301, in runcode
File "<interactive input>", line 1, in <module>
ZeroDivisionError: division by zero
> >>> open("imaginary.txt")
Traceback (most recent call last):
File "<string>", line 301, in runcode
File "<interactive input>", line 1, in <module>
FileNotFoundError: [Errno 2] No such file or directory: 'imaginary.txt'

Python 내장 예외

Python 인터프리터는 다양한 실패 조건을 알리는 수많은 내장 예외를 발생시킵니다. 다음 스니펫으로 나열 가능:

print(dir(locals()['__builtins__']))

자주 마주치는 내장 예외와 발생 상황 간단 참조:

예외발생 원인
AssertionErrorassert 문 실패 시
AttributeError속성 할당/참조 실패 시
EOFErrorinput()이 EOF 조건 만날 때
FloatingPointError부동소수점 연산 실패 시
GeneratorExit제너레이터의 close() 호출 시
ImportError임포트 모듈 못 찾을 때
IndexError시퀀스 인덱스 범위 초과 시
KeyError딕셔너리에 키 없을 때
KeyboardInterrupt사용자가 Ctrl+C 또는 Delete 누를 때
MemoryError연산이 가용 메모리 초과 시
NameError변수가 로컬/전역 스코프에 없을 때
NotImplementedError구현 없는 추상 메서드 호출 시
OSError시스템 관련 에러(파일 I/O 등)
OverflowError산술 결과가 너무 커 표현 불가 시
ReferenceError약한 참조가 가비지 컬렉션된 객체 프록시 시
RuntimeError다른 카테고리에 맞지 않는 에러
StopIterationnext() 호출 시 이터레이터 소진
SyntaxError파서가 잘못된 문법 만날 때
IndentationError들여쓰기 잘못됐을 때
TabError들여쓰기에 탭과 스페이스 혼용 시
SystemError인터프리터 내부 에러 감지 시
SystemExitsys.exit() 호출 시
TypeError부적절한 타입 객체로 연산/함수 호출 시
UnboundLocalError할당 전 지역 변수 참조 시
UnicodeError유니코드 인코딩/디코딩 에러
UnicodeEncodeError유니코드 인코딩 에러 시
UnicodeDecodeError유니코드 디코딩 에러 시
UnicodeTranslateError유니코드 번역 에러 시
ValueError함수가 올바른 타입이나 부적절한 값 인수 받을 때
ZeroDivisionError0으로 나누거나 모듈로 연산 시

더 세밀한 제어가 필요하면 사용자 정의 예외 클래스 정의 가능. Python 사용자 정의 예외 참조.

예외 처리는 try, except, finally 블록으로 직관적. 더 깊게는 Python try, except, finally 문 참조.


python

  1. 파이썬 키워드와 식별자: 예약어와 명명 규칙 마스터하기
  2. 파이썬 문장, 들여쓰기, 주석: 명확한 가이드
  3. 파이썬 변수, 상수, 리터럴 – 종합 가이드
  4. 파이썬 타입 변환 & 캐스팅 마스터하기: 종합 가이드
  5. 파이썬 입출력과 모듈 임포트 마스터하기: 실전 가이드
  6. 파이썬 전역, 지역, 비지역 변수 이해하기
  7. Python 숫자, 형 변환, 수학 마스터하기
  8. Python 디렉터리 및 파일 관리 마스터하기
  9. Python 사용자 정의 예외 마스터하기: 실전 가이드
  10. Python 현재 날짜와 시간 가져오기: 실전 가이드