Python 예외 처리: try, catch, finally & raise [예]

예외 처리란 무엇입니까? Python?

예외는 프로그램 실행 시 발생하는 오류입니다. 그러나 프로그램을 실행하는 동안, Python 프로그램 충돌을 방지하기 위해 처리해야 하는 예외를 생성합니다. ~ 안에 Python 언어에서는 예외가 오류 발생 시 자동으로 트리거되거나 코드에 의해 트리거되고 차단될 수 있습니다.

예외는 이벤트가 발생할 수 있지만 이러한 유형의 이벤트가 드물게 발생함을 나타냅니다. 메서드가 예외를 처리할 수 없으면 호출자 함수에 예외가 발생합니다. 결국, 메인 함수에서 예외가 발생하면 프로그램이 갑자기 종료됩니다.

예외의 일반적인 예

  • XNUMX으로 나누기
  • 존재하지 않는 파일에 액세스하는 중입니다.
  • 호환되지 않는 두 가지 유형 추가
  • 존재하지 않는 시퀀스 인덱스에 액세스하려고 합니다.
  • 연결이 끊긴 데이터베이스 서버에서 테이블을 제거합니다.
  • ATM 이용 가능 금액 이상 출금 가능

왜 예외를 사용해야 합니까?

예외를 사용하는 이유는 다음과 같습니다. Python:

  • 예외 처리를 사용하면 오류 처리 코드를 일반 코드와 분리할 수 있습니다.
  • 예외는 Python 대상 이는 오류를 나타냅니다.
  • 코드 주석과 마찬가지로 예외는 프로그램이 기대하는 바를 상기시키는 데 도움이 됩니다.
  • 코드를 명확하게 하고 가독성을 높입니다.
  • 오류 처리가 한 장소에서 한 가지 방식으로 이루어지므로 결과를 자극할 수 있습니다.
  • 예외는 오류 메시지를 처리하는 편리한 방법입니다.
  • In Python, 예외 발생 메서드를 사용하여 프로그램에서 예외를 발생시킬 수 있습니다.
  • 예외를 발생시키면 현재 코드 실행을 중단하고 처리될 때까지 예외를 다시 예상 상태로 반환하는 데 도움이 됩니다.
  • 직접 처리할 수 없는 구성 요소에 대한 예외를 처리합니다.

예외 규칙

다음은 몇 가지 필수 규칙입니다. Python 예외 처리:

  • 예외는 클래스 객체여야 합니다.
  • 클래스 예외의 경우 특정 클래스를 언급하는 Except 절과 함께 try 문을 사용할 수 있습니다.
  • 명령문이나 표현식이 구문상 정확하더라도 이를 실행하려고 하면 오류가 표시될 수 있습니다.
  • 실행 중에 발견된 오류를 예외라고 하며 무조건 치명적인 것은 아닙니다.

Python 예외 처리 메커니즘

예외 처리가 다음 5개의 키워드에 의해 관리됩니다.

  1. 시도
  2. 따라
  3. 최종적으로
  4. 던져

Python Try 문

try 문에는 try 키워드와 콜론(:) 및 예외가 발생할 수 있는 코드 모음이 포함됩니다. 하나 이상의 조항이 있습니다.

try 문을 실행하는 동안 예외가 발생하지 않으면 인터프리터는 해당 특정 try 문에 대한 예외 처리기를 무시합니다.

try 모음에서 예외가 발생하는 경우, try 모음은 만료되고 프로그램 제어는 try 모음 다음의 일치하는 except 핸들러로 이전됩니다.

Syntax:
try:
statement(s)

catch 문

Catch 블록은 한 번에 하나의 인수를 취하며, 이는 잡을 가능성이 있는 예외 유형입니다. 이러한 인수의 범위는 다양할 수 있는 특정 유형의 예외부터 포괄적인 예외 범주까지 다양할 수 있습니다.

catch 블록의 규칙:

  • catch 키워드를 사용하여 catch 블록을 정의할 수 있습니다.
  • Catch Exception 매개변수는 항상 괄호로 묶입니다.
  • 이는 항상 catch 블록이 처리하는 예외 유형을 나타냅니다.
  • 예외 처리 코드는 두 개의 {} 중괄호 사이에 작성됩니다.
  • 단일 try 블록 내에 여러 개의 catch 블록을 배치할 수 있습니다.
  • try 블록 뒤에만 catch 블록을 사용할 수 있습니다.
  • 모든 catch 블록은 하위 클래스에서 상위 클래스 예외로 순서가 지정되어야 합니다.

예:

try
}
catch (ArrayIndexOutOfBoundsException e) {
System.err.printin("Caught first " + e.getMessage()); } catch (IOException e) {
System.err.printin("Caught second " + e.getMessage());
}

마지막으로 진술서 Python

finally 블록은 예외 발생 여부에 관계없이 항상 실행됩니다. final 키워드를 사용하면 try-catch 블록 뒤에 오는 코드 블록을 만들 수 있습니다.

마지막으로 절은 선택사항입니다. 모든 조건에서 실행되어야 하는 정리 작업을 정의하기 위한 것입니다.

try:
    raise KeyboardInterrupt
finally:
    print 'welcome, world!'
Output
Welcome, world!
KeyboardInterrupt

마지막으로 try 문 이전에 절이 실행됩니다.

성명서 올리기 Python

raise 문은 예외 개체를 초기화하는 인수를 지정합니다. 여기서 예외 이름 뒤에는 쉼표가 오고, 쉼표 뒤에 오는 인수 또는 인수의 튜플 뒤에는 쉼표가 옵니다.

구문 :

raise [Exception [, args [, traceback]]]

이 구문에서 인수는 선택적이며 실행 시 예외 인수 값은 항상 없음입니다.
예:
A Python 예외는 문자열, 클래스, 숫자 또는 객체와 같은 모든 값이 될 수 있습니다. 다음에서 발생하는 대부분의 예외는 Python 코어는 클래스의 인스턴스인 인수가 있는 클래스입니다.

중대한 Python 오류

오류 유형 상품 설명
산술 오류 ArithmeticError는 모든 산술 예외에 대한 기본 클래스 역할을 합니다. 산술 연산의 오류에 대해 발생합니다.
가져오기 오류 존재하지 않는 모듈을 가져오려고 하면 ImportError가 발생합니다. 이러한 종류의 예외는 모듈 이름을 잘못 입력했거나 표준 경로에 없는 모듈을 입력한 경우 발생합니다.
인덱스 오류 범위를 벗어난 시퀀스를 참조하려고 하면 IndexError가 발생합니다.
키 오류 특정 키가 사전에서 발견되지 않으면 KeyError 예외가 발생합니다.
이름 오류 로컬 또는 전역 네임스페이스에 존재하지 않는 코드에서 이름이 참조되면 NameError가 발생합니다.
값 오류 값 오류는 함수나 내장 연산이 올바른 유형일 수 있으나 적합한 값이 없는 인수를 받을 때 발생합니다.
EOF오류 이러한 종류의 오류는 내장 함수(input() 또는 raw_input()) 중 하나가 데이터를 읽지 않고 EOF 조건에 도달할 때 발생합니다.
ZeroDivisonError 모든 숫자 유형에 대해 XNUMX으로 나누거나 모듈화할 때 발생하는 이러한 유형의 오류입니다.
IO오류- 이러한 종류의 오류는 입출력 작업이 실패할 때 발생합니다.
구문 오류 오류가 있을 때 발생하는 SyntaxErrors Python 통사론.
식별오류 들여쓰기가 제대로 정의되지 않은 경우 발생하는 오류입니다.

기타 중요 Python 예외

예외 상품 설명
산술 예외 XNUMX으로 나누기와 같은 산술 오류입니다.
ArrayIndexOutOfBoundsException 배열 인덱스가 범위를 벗어났습니다.
ArrayStore 예외 할당은 호환되지 않는 유형의 배열 요소에 도움이 됩니다.
클래스캐스트 예외 잘못된 캐스트
MlegalMonitorStateException 잠금 해제된 스레드를 기다리는 것과 같은 불법적인 모니터 작업입니다.
MlegalStateException 환경이나 애플리케이션의 상태가 잘못되었습니다.
ClassNotFoundException 수업을 찾을 수 없습니다.
CloneNotSupportedException Cloneable 인터페이스를 구현하지 않는 객체를 복제하려고 합니다.
불법접근예외 클래스에 대한 액세스가 거부되었습니다.
인스턴스화 예외 인터페이스 또는 추상 클래스의 개체를 만들려고 할 때 발생합니다.
CloneNotSupportedException 인터페이스를 구현하지 않는 개체를 복제하려고 합니다.

오류와 예외

오류 예외
모든 오류 Python 체크되지 않은 유형입니다. 예외에는 확인된 유형과 확인되지 않은 유형이 모두 포함됩니다.
런타임 시 컴파일러에 알려지지 않은 오류가 발생합니다. try-catch 블록을 사용하여 예외를 처리하여 예외를 복구할 수 있습니다.
오류는 주로 응용 프로그램이 실행되는 환경으로 인해 발생합니다. 응용 프로그램 자체에서 예외가 발생합니다.
예 :
메모리 부족오류
예 :
검사 예외, SQL 예외, NullPointerException 등

요약

  • 예외는 프로그램 실행 중에 발생한 오류입니다.
  • 예외는 이벤트가 발생할 수 있지만 이러한 유형의 이벤트가 드물게 발생함을 나타냅니다.
  • 예외의 일반적인 예는 1) 2으로 나누기, 3) 존재하지 않는 파일에 액세스, XNUMX) 호환되지 않는 두 유형의 추가입니다.
  • 예외는 Python 오류를 나타내는 객체입니다.
  • try 문에는 try 키워드와 콜론(:) 및 예외가 발생할 수 있는 코드 모음이 포함됩니다. 하나 이상의 조항이 있습니다.
  • Catch 블록은 한 번에 하나의 인수를 취하며, 이는 잡을 가능성이 있는 예외 유형입니다.
  • raise 문은 예외 개체를 초기화하는 인수를 지정합니다.
  • 마지막으로 블록은 예외 발생 여부에 관계없이 항상 실행됩니다.