>  기사  >  백엔드 개발  >  Python 예외 처리 메커니즘에 대한 자세한 설명

Python 예외 처리 메커니즘에 대한 자세한 설명

Guanhui
Guanhui앞으로
2020-07-23 17:48:222505검색

Python 예외 처리 메커니즘에 대한 자세한 설명

try 제외 예외 처리의 사용법을 이해하려면 간단히 말해 try 블록에서 프로그램 실행 중에 예외가 발생하면 해당 예외가 캡처되고 해당 예외 블록을 찾아 예외를 처리합니다. , 여기에 한 가지 질문이 있습니다. 해당하는 제외 블록을 어떻게 찾나요?

우리는 try 블록이 여러 개의 제외 블록에 해당할 수도 있고, 제외 블록이 동시에 여러 개의 예외를 처리할 수 있다는 것을 알고 있습니다. 모든 예외를 처리하기 위해 Except 블록을 사용하려면 다음과 같이 작성할 수 있습니다:

try: #...Exception: #...

이 경우 try 블록에서 발생할 수 있는 모든 예외에 대해 , Python은 핸들러가 처리를 위해 유일한 제외 블록으로 넘겨질 것이라고 설명합니다. 그 이유는 매개변수가 Exception이기 때문입니다. 이는 모든 유형의 예외를 수신할 수 있음을 의미합니다.

예외를 받을 수 있는 Except 뒤에는 Exception이 올 수도 있고 매개변수 없이 올 수도 있지만 의미는 동일합니다.

여기에서는 Exception에 대해 자세히 소개하겠습니다. 프로그램에서 발생할 수 있는 다양한 예외를 표현하기 위해 Python은 많은 수의 예외 클래스를 제공하며 이러한 예외 클래스 간에는 엄격한 상속 관계가 있음을 알아야 합니다. 그림 1은 Python의 공통 예외 클래스 간의 상속 관계를 보여줍니다.

그림 1에서 볼 수 있듯이 BaseException은 Python의 모든 예외 클래스의 기본 클래스이지만 우리에게 가장 중요한 것은 Exception 클래스입니다. 프로그램에서 발생할 수 있는 다양한 예외가 BaseException에서 상속되기 때문입니다. 예외.

따라서 사용자가 사용자 정의 예외를 구현하려면 BaseException을 상속하지 않고 Exception 클래스를 상속해야 합니다. 예외 클래스를 사용자 정의하는 방법에 대한 자세한 내용은 "Python 사용자 정의 예외 클래스" 섹션을 읽어보세요.

try 블록이 예외 개체를 캡처하면 Python 인터프리터는 예외 유형을 각 제외 블록에 지정된 예외 클래스와 차례로 비교합니다. 캡처된 예외 클래스가 제외 블록 뒤의 예외 클래스와 동일한 경우, 또는 가 예외 클래스의 하위 클래스인 경우 Python 인터프리터는 예외를 처리하기 위해 이 제외 블록을 호출합니다. 그렇지 않으면 Python 인터프리터는 마지막 제외와 비교할 때까지 계속 비교합니다. 비교가 성공하지 못하면 다음을 증명합니다. 예외를 처리할 수 없습니다.

그림 2는 try 블록의 프로그램에서 예외가 발생했을 때 예외 잡기부터 예외 처리까지의 전체 과정을 보여줍니다.

몇 가지 간단한 예외 포착 예를 살펴보겠습니다.

try:
  a = int(input("输入 a:"))
  b = int(input("输入 b:"))
  print( a/b )
except ValueError:
  print("数值错误:程序只能接收整数参数")
except ArithmeticError:
  print("算术错误")
except Exception:
  print("未知异常")

이 프로그램에서는 사용자가 입력한 a 및 b 값에 ​​따라 ValueError 및 ArithmeticError 예외가 발생할 수 있습니다.

  • 사용자가 a 또는 b가 숫자가 아닌 다른 문자인 경우 Try 블록은 이러한 유형의 예외를 포착하고 Python 인터프리터는 예외를 처리하기 위해 첫 번째 제외 블록을 호출합니다. 사용자가 입력한 숫자는 숫자이지만 b의 값은 0입니다. 나눗셈 작업 중에는 제수가 0이 될 수 없으므로 ArithmeticError 예외가 발생합니다. try 블록은 예외를 캡처하고 Python 인터프리터는 두 번째 제외 블록을 호출합니다.

  • 물론, 프로그램 실행 중에 다른 요인으로 인해 예외가 발생할 수 있으며, Python은 이를 처리하기 위해 마지막 제외 블록을 호출합니다.

  • try 블록에 여러 개의 제외 블록이 있는 경우 이러한 제외 블록은 모든 예외를 처리하는 제외 블록(매개변수가 Exception이거나 아무것도 쓸 수 없음)을 모든 제외 블록에 배치해야 합니다. 블록, 그리고 상위 클래스 예외의 모든 제외 블록은 하위 클래스 예외의 제외 블록 뒤에 배치되어야 합니다.

  • 추천 튜토리얼: "
Python Tutorial

"

위 내용은 Python 예외 처리 메커니즘에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 jb51.net에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제