python
예외는 프로그램 실행 시 발생하는 오류입니다. 그러나 프로그램을 실행하는 동안 Python은 프로그램이 충돌하지 않도록 처리해야 하는 예외를 생성합니다. Python 언어에서 예외는 오류 발생 시 자동으로 트리거되거나 코드에서 트리거 및 가로챌 수 있습니다.
예외는 이벤트가 발생할 수 있지만 이러한 유형의 이벤트가 드물게 발생함을 나타냅니다. 메서드가 예외를 처리할 수 없으면 호출자 함수에 throw됩니다. 결국 메인 함수에서 예외가 발생하면 프로그램이 갑자기 종료된다.
이 Python 예외 처리 자습서에서는 다음을 배우게 됩니다.
Python에서 예외를 사용하는 이유는 다음과 같습니다.
다음은 Python 예외 처리의 몇 가지 필수 규칙입니다.
예외 처리는 다음 5가지 키워드로 관리됩니다.
try 문에는 키워드 try, 콜론(:) 및 예외가 발생할 수 있는 코드 모음이 포함됩니다. 하나 이상의 절이 있습니다.
try 문을 실행하는 동안 예외가 발생하지 않으면 인터프리터는 해당 try 문에 대한 예외 처리기를 무시합니다.
만약 try 스위트에서 어떤 예외가 발생한다면, try 스위트는 만료되고 프로그램 제어는 try 스위트 다음에 오는 일치하는 예외 핸들러로 넘어갑니다.
Syntax: try: statement(s)
Catch 블록은 한 번에 하나의 인수를 취하며, 이는 catch할 가능성이 높은 예외 유형입니다. 이러한 인수 범위는 다양할 수 있는 특정 유형의 예외부터 포괄적인 예외 범주에 이르기까지 다양합니다.
catch 블록 규칙:
try } catch (ArrayIndexOutOfBoundsException e) { System.err.printin("Caught first " + e.getMessage()); } catch (IOException e) { System.err.printin("Caught second " + e.getMessage()); }
finally 블록은 예외가 발생하는지 여부에 관계없이 항상 실행됩니다. final 키워드를 사용하면 try-catch 블록 다음에 오는 코드 블록을 만들 수 있습니다.
마지막으로 절은 선택 사항입니다. 모든 조건에서 실행되어야 하는 정리 작업을 정의하기 위한 것입니다.
try: raise KeyboardInterrupt finally: print 'welcome, world!' Output Welcome, world! KeyboardInterrupt
마지막으로 try 문보다 먼저 절이 실행됩니다.
raise 문은 예외 개체를 초기화하는 인수를 지정합니다. 여기에서 예외 이름 뒤에 쉼표가 오고 쉼표 뒤에 오는 인수 또는 튜플이 옵니다.
구문:
raise [Exception [, args [, traceback]]]
이 구문에서 인수는 선택 사항이며 실행 시 예외 인수 값은 항상 없음입니다.
Python 예외는 문자열, 클래스, 숫자 또는 객체와 같은 값일 수 있습니다. Python 코어에서 발생하는 이러한 예외의 대부분은 클래스의 인스턴스인 인수가 있는 클래스입니다.
오류 유형 | 설명 |
---|---|
산술 오류 | ArithmeticError는 모든 산술 예외에 대한 기본 클래스 역할을 합니다. 산술 연산의 오류에 대해 발생합니다. |
가져오기 오류 | ImportError는 존재하지 않는 모듈을 가져오려고 할 때 발생합니다. 이러한 종류의 예외는 모듈 이름이나 표준 경로에 없는 모듈을 잘못 입력한 경우 발생합니다. |
색인 오류 | 범위를 벗어난 시퀀스를 참조하려고 하면 IndexError가 발생합니다. |
키 오류 | 사전에서 특정 키를 찾지 못하면 KeyError 예외가 발생합니다. |
이름 오류 | 로컬 또는 글로벌 네임스페이스에 존재하지 않는 코드에서 이름이 참조될 때 NameError가 발생합니다. |
값 오류 | 함수나 내장 연산이 올바른 유형일 수 있지만 적절한 값이 없는 인수를 받으면 값 오류가 발생합니다. |
EOF 오류 | 이러한 종류의 오류는 내장 함수(input() 또는 raw_input()) 중 하나가 데이터를 읽지 않고 EOF 조건에 도달할 때 발생합니다. |
ZeroDivisionError | 이 유형의 오류는 모든 숫자 유형에 대해 0으로 나누거나 모듈이 발생할 때 발생합니다. |
IO 오류- | 입력/출력 작업이 실패할 때 발생하는 이러한 종류의 오류입니다. |
구문 오류 | Python 구문에 오류가 있을 때 발생하는 SyntaxErrors. |
들여쓰기 오류 | 들여쓰기가 제대로 정의되지 않았을 때 발생하는 오류입니다. |
예외 | 설명 |
---|---|
산술 예외 | 0으로 나누기와 같은 산술 오류. |
ArrayIndexOutOfBoundsException | 배열 인덱스가 범위를 벗어났습니다. |
ArrayStore 예외 | 할당은 호환되지 않는 유형의 배열 요소에 도움이 됩니다. |
클래스캐스트 예외 | 잘못된 캐스트 |
MlegalMonitorStateException | 잠금 해제된 스레드를 기다리는 것과 같은 잘못된 모니터 작업입니다. |
MlegalStateException | 환경 또는 애플리케이션이 잘못된 상태입니다. |
ClassNotFoundException | 클래스를 찾을 수 없습니다. |
CloneNotSupportedException | Cloneable 인터페이스를 구현하지 않는 개체를 복제하려고 합니다. |
불법 액세스 예외 | 수업에 대한 액세스가 거부되었습니다. |
인스턴스화 예외 | 인터페이스 또는 추상 클래스의 개체를 만들려고 할 때 발생합니다. |
CloneNotSupportedException | 인터페이스를 구현하지 않는 개체 복제를 시도합니다. |
오류 | 예외 |
---|---|
파이썬의 모든 오류는 체크되지 않은 유형입니다. | 예외에는 체크된 유형과 선택되지 않은 유형이 모두 포함됩니다. |
컴파일러에 알려지지 않은 오류가 런타임에 발생합니다. | 예외는 try-catch 블록을 사용하여 처리하여 복구할 수 있습니다. |
오류는 주로 애플리케이션이 실행되는 환경에서 발생합니다. | 애플리케이션 자체에서 예외가 발생합니다. |
예: OutofMemoryError | 예: 확인된 예외, SQL 예외, NullPointerException 등 |
python
많은 사람들이 예외를 잘못된 방식으로 처리하는 것을 봅니다. 아마도 이것은 당신에게도 적용될 것입니다. 다음 상황이 익숙합니까? 코드를 작성하고 있지만 사용 중인 라이브러리에서 예외가 발생할 수 있다는 것을 알고 있습니다. 당신은 정확히 기억하지 못합니다. 이 시점에서 소위 catch-all 블록을 사용하고 재미있는 것을 계속하고 싶은 유혹이 있습니다. 목차 최악의 방법 모든 예외를 포착하는 좀 더 나은 방법 심각한 상황 당신이 처리할 수 있는 것을 잡아라 결론 최악의 방법 당신이 할 수 있는 최악의 일은 무엇이든 잡아
예외는 프로그램 실행 중에 발생하는 문제입니다. C++ 예외는 0으로 나누려는 시도와 같이 프로그램이 실행되는 동안 발생하는 예외적인 상황에 대한 응답입니다. 예외는 프로그램의 한 부분에서 다른 부분으로 제어를 전송하는 방법을 제공합니다. C++ 예외 처리는 try, catch,의 세 가지 키워드를 기반으로 합니다. 그리고 던지기 . 던지다 − 문제가 나타나면 프로그램에서 예외가 발생합니다. 이것은 throw를 사용하여 수행됩니다. 키워드. 잡다 − 프로그램은 문제를 처리하려는 프로그램의 위치에서 예외 처리기로 예외를