English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Python(해석기)가 오류를 만날 때는 예외를 일으킵니다. 예를 들어: 0으로 나누기. 이 문서에서는 Python 내장 예외 처리를 배울 것입니다.
프로그램을 작성하는 동안 오류를 자주 만날 수 있습니다.
언어의 올바른 구조(문법)를 따르지 않았기 때문에 발생하는 오류는 문법 오류나 파싱 오류라고 합니다.
>>> if a < 3 File <interactive input>, line 1 if a < 3 ^ SyntaxError: invalid syntax
여기서 if 문에 쉼표가 빠졌음을 주목할 수 있습니다.
에러도 실행 중에 발생할 수 있습니다. 이러한 것들은 예외라고 합니다. 예를 들어, 열려 있는 파일이 없을 때(FileNotFoundError), 숫자를 0으로 나누려고 할 때(ZeroDivisionError), 시도한 것을 가져오는 모듈을 찾을 수 없을 때(ImportError) 등 이런 상황이 발생합니다.
이러한 종류의 실행 중 오류가 발생할 때마다 Python은 예외 객체를 생성합니다. 잘 처리하지 않으면 오류의 추적을 출력하고, 오류가 발생한 이유에 대한 일부 정보도 출력합니다.
>>> 1 / 0 Traceback (최근 호출이 맨 아래): File <string>, line 301, in runcode File <interactive input>, line 1, <module> ZeroDivisionError: 0으로 나눔 >>> open("imaginary.txt") Traceback (최근 호출이 맨 아래): File <string>, line 301, in runcode File <interactive input>, line 1, <module> FileNotFoundError: [Errno 2파일이나 디렉토리가 존재하지 않음: 'imaginary.txt'
비법적 연산이 예외를 발생시킬 수 있습니다. Python에는 많은 내장 예외가 있으며, 특정 오류가 발생할 때마다 이러한 예외가 발생합니다. 다음과 같이 local() 내장 함수를 사용하여 모든 내장 예외를 확인할 수 있습니다.
>>> locals()['__builtins__']
이렇게 하면 내장 예외, 함수, 속성의 딕셔너리를 반환합니다.
아래는 Python 프로그래밍에서 일반적으로 사용되는 내장 예외와 그 원인을 나열합니다.
예외 | 오류 원인 |
---|---|
AssertionError | assert 문이 실패할 때 발생. |
AttributeError | 속성 할당이나 참조가 실패할 때 발생. |
EOFError | input() 함수가 파일의 끝 조건에 도달할 때 발생. |
FloatingPointError | 부동소수점 연산이 실패할 때 발생. |
GeneratorExit | generator를 호출하는 close() 메서드를 호출할 때 발생. |
ImportError | 가져올 수 없는 모듈을 찾을 때 발생. |
IndexError | 시퀀스의 인덱스가 범위를 벗어났을 때 발생. |
KeyError | 사전에 정의되지 않은 키를 찾을 때 발생. |
KeyboardInterrupt | 사용자가 중지 키(Ctrl)를 누를 때 + c 또는 Delete를 호출할 때 발생. |
MemoryError | 메모리 부족으로 인해 연산이 발생. |
NameError | 변수를 지역 또는 전역으로 찾을 수 없을 때 발생. |
NotImplementedError | 아직 구현되지 않은 방법. |
OSError | 시스템 연산이 시스템 관련 오류를 유발할 때 발생합니다 |
OverflowError | 수학 연산의 결과가 너무 크기 때문에 표현할 수 없을 때 발생합니다 |
ReferenceError | 약한 참조 대리자를 사용하여 가비지 수집의 참조 객체에 접근할 때 발생합니다 |
RuntimeError | 다른 어떤 분류에도 맞지 않는 오류가 발생할 때 발생합니다 |
StopIteration | next() 함수에서 이터레이터가 더 이상 아이템을 반환할 수 없음을 나타내기 위해 발생합니다 |
SyntaxError | 문법 오류가 발생할 때 분석기에서 발생합니다 |
IndentationError | 줄간격이 올바르지 않을 때 발생합니다 |
TabError | 줄간격이 일관되지 않은 탭과 공백으로 구성될 때 발생합니다 |
SystemError | 인터프리터가 내부 오류를 감지할 때 발생합니다 |
SystemExit | sys.exit() 기능에서 발생합니다 |
TypeError | 함수나 연산이 잘못된 타입의 객체에 적용될 때 발생합니다 |
UnboundLocalError | 함수나 메서드에서 지역 변수를 참조하지만 해당 변수에 값이 바인딩되지 않았을 때 발생합니다 |
UnicodeError | Unicode와 관련된 인코딩이나 디코딩 오류가 발생할 때 발생합니다 |
UnicodeEncodeError | 인코딩 중 Unicode와 관련된 오류가 발생할 때 발생합니다 |
UnicodeDecodeError | 디코딩 중 Unicode와 관련된 오류가 발생할 때 발생합니다 |
UnicodeTranslateError | Unicode와 관련된 오류가 발생할 때 번역 중 발생합니다 |
ValueError | 함수가 올바른 타입을 받지만 올바른 값을 받지 않을 때 발생합니다 |
ZeroDivisionError | 구분법이나 나눗셈의 두 번째 연산자가 0일 때 발생합니다 |
또한 파이썬에서 자신의 예외를 정의할 수 있습니다(필요한 경우). 이 페이지를 방문하여 관련 정보를 확인하세요사용자 정의된 예외의자세한 정보.
try, except 및 finally 문을 사용할 수 있습니다파이썬에서 이러한 내장된 및 사용자 정의된 예외를 처리하다。