python
이 자습서에서는 Python에 내장된 다양한 유형의 오류 및 예외에 대해 학습합니다. 파이썬 인터프리터에 오류가 발생할 때마다 발생합니다.
프로그램을 작성하는 동안 실행하려고 할 때 오류가 발생하는 특정 실수를 할 수 있습니다. 파이썬 프로그램은 처리되지 않은 오류가 발생하는 즉시 종료됩니다. 이러한 오류는 크게 두 가지 클래스로 분류할 수 있습니다.
언어의 적절한 구조(구문)를 따르지 않아 발생하는 오류를 구문 오류라고 합니다. 또는 파싱 오류 .
한 가지 예를 살펴보겠습니다.
>>> if a < 3
File "<interactive input>", line 1
if a < 3
^
SyntaxError: invalid syntax
예에서 볼 수 있듯이 화살표는 구문 분석기가 구문 오류가 발생한 위치를 나타냅니다.
콜론 :
if
에 누락되었습니다. 성명서.
런타임 시(구문 테스트를 통과한 후) 발생하는 오류를 예외라고 합니다. 또는 논리적 오류 .
예를 들어 존재하지 않는 파일(읽기용)을 열려고 할 때 발생합니다(FileNotFoundError
), 숫자를 0으로 나누십시오(ZeroDivisionError
) 또는 존재하지 않는 모듈을 가져오려고 시도합니다(ImportError
).
이러한 유형의 런타임 오류가 발생할 때마다 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에는 해당 오류가 발생할 때 발생하는 내장 예외가 많이 있습니다. 내장된 local()
를 사용하여 내장된 모든 예외를 볼 수 있습니다. 기능:
print(dir(locals()['__builtins__']))
locals()['__builtins__']
내장 예외, 함수 및 속성의 모듈을 반환합니다. dir
이러한 속성을 문자열로 나열할 수 있습니다.
Python 프로그래밍의 일반적인 내장 예외와 그 원인이 되는 오류는 다음과 같습니다.
예외 | 오류 원인 |
---|---|
AssertionError | assert 일 때 발생 문이 실패했습니다. |
AttributeError | 속성 할당 또는 참조가 실패할 때 발생합니다. |
EOFError | input() 일 때 발생 함수가 파일 끝 조건에 도달했습니다. |
FloatingPointError | 부동 소수점 연산이 실패할 때 발생합니다. |
GeneratorExit | 제너레이터의 close() 일 때 발생 메소드가 호출됩니다. |
ImportError | 가져온 모듈을 찾을 수 없을 때 발생합니다. |
IndexError | 시퀀스의 인덱스가 범위를 벗어날 때 발생합니다. |
KeyError | 사전에서 키를 찾을 수 없을 때 발생합니다. |
KeyboardInterrupt | 사용자가 인터럽트 키(Ctrl+C )를 눌렀을 때 발생 또는 Delete ). |
MemoryError | 작업에 메모리가 부족할 때 발생합니다. |
NameError | 변수가 지역 또는 전역 범위에서 발견되지 않을 때 발생합니다. |
NotImplementedError | 추상 메소드에 의해 발생합니다. |
OSError | 시스템 작동이 시스템 관련 오류를 일으킬 때 발생합니다. |
OverflowError | 산술 연산의 결과가 너무 커서 표현할 수 없을 때 발생합니다. |
ReferenceError | 가비지 수집된 참조에 액세스하기 위해 약한 참조 프록시가 사용될 때 발생합니다. |
RuntimeError | 오류가 다른 범주에 속하지 않을 때 발생합니다. |
StopIteration | next() 에 의해 발생 iterator에서 더 이상 반환할 항목이 없음을 나타내는 함수입니다. |
SyntaxError | 구문 오류가 발생하면 파서에 의해 발생합니다. |
IndentationError | 올바르지 않은 들여쓰기가 있을 때 발생합니다. |
TabError | 들여쓰기가 일관성 없는 탭과 공백으로 구성된 경우 발생합니다. |
SystemError | 인터프리터가 내부 오류를 감지하면 발생합니다. |
SystemExit | sys.exit() 에 의해 발생 기능. |
TypeError | 함수나 연산이 잘못된 유형의 객체에 적용될 때 발생합니다. |
UnboundLocalError | 함수나 메서드에서 지역 변수에 대한 참조가 만들어졌지만 해당 변수에 바인딩된 값이 없을 때 발생합니다. |
UnicodeError | 유니코드 관련 인코딩 또는 디코딩 오류가 발생할 때 발생합니다. |
UnicodeEncodeError | 인코딩 중 유니코드 관련 오류가 발생하면 발생합니다. |
UnicodeDecodeError | 디코딩 중 유니코드 관련 오류가 발생하면 발생합니다. |
UnicodeTranslateError | 번역 중 유니코드 관련 오류가 발생하면 발생합니다. |
ValueError | 함수가 올바른 유형의 인수를 가져오지만 값이 올바르지 않을 때 발생합니다. |
ZeroDivisionError | 나누기 또는 모듈로 연산의 두 번째 피연산자가 0일 때 발생합니다. |
필요한 경우 Python에서 자체 예외를 정의할 수도 있습니다. 이에 대해 자세히 알아보려면 Python 사용자 정의 예외를 방문하십시오.
try
을 사용하여 Python에서 이러한 내장 및 사용자 정의 예외를 처리할 수 있습니다. , except
및 finally
진술. 이에 대해 자세히 알아보려면 Python try, except 및 finally 문을 방문하세요.
python
파이썬 2란 무엇인가요? 파이썬 2 코드 개발 프로세스를 이전 버전보다 쉽게 만들었습니다. Python Enhancement Proposal(PEP)의 기술적 세부 사항을 구현했습니다. Python 2.7(2.x의 마지막 버전)은 더 이상 개발되지 않으며 2020년에 중단됩니다. 이 튜토리얼에서는 다음을 배우게 됩니다. 파이썬 2란 무엇입니까? 파이썬 3이란 무엇입니까? Python 2를 배워야 하는 이유는 무엇입니까? Python 3를 사용해야 하는 이유는 무엇입니까? 파이썬 2의 역사 파이썬 3의 역사 Pyt
많은 사람들이 예외를 잘못된 방식으로 처리하는 것을 봅니다. 아마도 이것은 당신에게도 적용될 것입니다. 다음 상황이 익숙합니까? 코드를 작성하고 있지만 사용 중인 라이브러리에서 예외가 발생할 수 있다는 것을 알고 있습니다. 당신은 정확히 기억하지 못합니다. 이 시점에서 소위 catch-all 블록을 사용하고 재미있는 것을 계속하고 싶은 유혹이 있습니다. 목차 최악의 방법 모든 예외를 포착하는 좀 더 나은 방법 심각한 상황 당신이 처리할 수 있는 것을 잡아라 결론 최악의 방법 당신이 할 수 있는 최악의 일은 무엇이든 잡아