English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Python 기본 강의

Python 흐름 제어

Python 함수

Python 데이터 타입

Python 파일 작업

Python 객체와 클래스

Python 날짜와 시간

Python 고급 지식

Python 참조 가이드

Python 오류와 내장 예외

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 내장 예외

비법적 연산이 예외를 발생시킬 수 있습니다. Python에는 많은 내장 예외가 있으며, 특정 오류가 발생할 때마다 이러한 예외가 발생합니다. 다음과 같이 local() 내장 함수를 사용하여 모든 내장 예외를 확인할 수 있습니다.

>>> locals()['__builtins__']

이렇게 하면 내장 예외, 함수, 속성의 딕셔너리를 반환합니다.

아래는 Python 프로그래밍에서 일반적으로 사용되는 내장 예외와 그 원인을 나열합니다.

Python 내장 표준 예외
예외오류 원인
AssertionErrorassert 문이 실패할 때 발생.
AttributeError속성 할당이나 참조가 실패할 때 발생.
EOFErrorinput() 함수가 파일의 끝 조건에 도달할 때 발생.
FloatingPointError부동소수점 연산이 실패할 때 발생.
GeneratorExitgenerator를 호출하는 close() 메서드를 호출할 때 발생.
ImportError가져올 수 없는 모듈을 찾을 때 발생.
IndexError시퀀스의 인덱스가 범위를 벗어났을 때 발생.
KeyError사전에 정의되지 않은 키를 찾을 때 발생.
KeyboardInterrupt사용자가 중지 키(Ctrl)를 누를 때 + c 또는 Delete를 호출할 때 발생.
MemoryError메모리 부족으로 인해 연산이 발생.
NameError변수를 지역 또는 전역으로 찾을 수 없을 때 발생.
NotImplementedError아직 구현되지 않은 방법.
OSError시스템 연산이 시스템 관련 오류를 유발할 때 발생합니다
OverflowError수학 연산의 결과가 너무 크기 때문에 표현할 수 없을 때 발생합니다
ReferenceError약한 참조 대리자를 사용하여 가비지 수집의 참조 객체에 접근할 때 발생합니다
RuntimeError다른 어떤 분류에도 맞지 않는 오류가 발생할 때 발생합니다
StopIterationnext() 함수에서 이터레이터가 더 이상 아이템을 반환할 수 없음을 나타내기 위해 발생합니다
SyntaxError문법 오류가 발생할 때 분석기에서 발생합니다
IndentationError줄간격이 올바르지 않을 때 발생합니다
TabError줄간격이 일관되지 않은 탭과 공백으로 구성될 때 발생합니다
SystemError인터프리터가 내부 오류를 감지할 때 발생합니다
SystemExitsys.exit() 기능에서 발생합니다
TypeError함수나 연산이 잘못된 타입의 객체에 적용될 때 발생합니다
UnboundLocalError함수나 메서드에서 지역 변수를 참조하지만 해당 변수에 값이 바인딩되지 않았을 때 발생합니다
UnicodeErrorUnicode와 관련된 인코딩이나 디코딩 오류가 발생할 때 발생합니다
UnicodeEncodeError인코딩 중 Unicode와 관련된 오류가 발생할 때 발생합니다
UnicodeDecodeError디코딩 중 Unicode와 관련된 오류가 발생할 때 발생합니다
UnicodeTranslateErrorUnicode와 관련된 오류가 발생할 때 번역 중 발생합니다
ValueError함수가 올바른 타입을 받지만 올바른 값을 받지 않을 때 발생합니다
ZeroDivisionError구분법이나 나눗셈의 두 번째 연산자가 0일 때 발생합니다

또한 파이썬에서 자신의 예외를 정의할 수 있습니다(필요한 경우). 이 페이지를 방문하여 관련 정보를 확인하세요사용자 정의된 예외의자세한 정보. 

try, except 및 finally 문을 사용할 수 있습니다파이썬에서 이러한 내장된 및 사용자 정의된 예외를 처리하다