>  기사  >  백엔드 개발  >  Python 예외 처리 방법에 대한 자세한 그래픽 설명

Python 예외 처리 방법에 대한 자세한 그래픽 설명

高洛峰
高洛峰원래의
2017-03-23 14:42:531843검색

Python은 Python 프로그램이 실행될 때 발생하는 예외와 오류를 처리하기 위해 두 가지 매우 중요한 기능을 제공합니다. 이 기능을 사용하여 Python 프로그램을 디버그할 수 있습니다.

문서를 보려면 F1을 열 수 있습니다. 그림에 표시된 것처럼 많은 예외 유형이 있습니다.

Python 예외 처리 방법에 대한 자세한 그래픽 설명

무엇입니까? 예외?

예외란 프로그램 실행 중에 발생하여 프로그램의 정상적인 실행에 영향을 미치는 이벤트입니다.

일반적으로 Python이 프로그램을 정상적으로 처리할 수 없을 때 예외가 발생합니다.

예외는 오류를 나타내는 Python 객체입니다.

Python 스크립트에서 예외가 발생하면 이를 포착하고 처리해야 합니다. 그렇지 않으면 프로그램이 실행을 종료합니다.

예외 처리

예외를 포착하려면 try/exc 문을 사용할 수 있습니다.

try/Exception 문은 try 문 블록에서 오류를 감지하는 데 사용되므로, Except 문이 예외 정보를 캡처하고 처리할 수 있습니다.

예외 발생 시 프로그램을 종료하고 싶지 않다면 한번 시도해 보세요.

구문:

다음은 간단한 try...Exception...else의 구문입니다.

try:

        #运行别的代码

except

        #如果在try部份引发了'name'异常

except ,:

        #如果引发了'name'异常,获得附加的数据

else:

        #如果没有异常发生

try의 작동 원리는 try를 시작한 후 문에서 Python은 예외가 발생할 때 여기로 돌아올 수 있도록 현재 프로그램의 컨텍스트를 표시합니다. try 절이 먼저 실행되고 다음에 일어나는 일은 실행 중에 예외가 발생하는지 여부에 따라 달라집니다.

try 이후 문이 실행될 때 예외가 발생하면 Python은 예외가 처리된 후 전체 try 문을 통과하여 try 및 첫 번째 Except 절을 실행합니다. (예외를 처리할 때 새로운 예외가 발생하지 않는 한)

#try 후 문에서 예외가 발생했지만 일치하는 Except 절이 없으면 해당 예외는 상위 try 또는 프로그램의 최상위 수준에 제출됩니다(이로 인해 프로그램이 종료되고 오류 지방 오류 메시지를 인쇄합니다.

#try 절이 실행될 때 예외가 발생하지 않으면 파이썬은 else 문 다음에 문을 실행하고(else가 있는 경우) 제어 흐름은 전체 try 문을 통과합니다.

다음은 간단한 예입니다. 파일을 열고, 파일에 내용을 쓰고, 예외가 발생하지 않습니다.

#!/usr/bin/python

try:

   fh = open("testfile" "w")

   fh.write("This is my test file for exception handling!!")

except IOError:

   print "Error: can't find file or read data"

else:

   print "Written content in the file successfully"

   fh.close()

위 프로그램 출력 결과 :

 Written content in the file successfully

다음은 간단한 예입니다. 파일을 엽니다. 콘텐츠가 기록되었지만 파일에 쓰기 권한이 없어 예외가 발생했습니다:

#!/usr/bin/python

try:

   fh = open("testfile""r")

   fh.write("This is my test file for exception handling!!")

except IOError:

   print "Error: can't find file or read data"

else:

   print "Written content in the file successfully"

위 프로그램 출력 결과:

Error: can't find file or read data

예외 유형 없이 제외 사용

다음 예와 같이 예외 유형 없이 Except를 사용할 수 있습니다.

try:

   You do your operations here;

   ......................

except:

   If there is any exception, then execute this block.

   ......................

else:

   If there is no exception then execute this block.

위 방식의 try-Exception 문은 발생하는 모든 예외를 캡처합니다. 하지만 이는 좋은 방법이 아니며, 이 프로그램을 통해서는 구체적인 비정상적인 정보를 식별할 수 없습니다. 모든 예외를 포착하기 때문입니다.

여러 예외 유형과 함께 Except 사용

아래 표시된 것처럼 동일한 Except 문을 사용하여 여러 예외 메시지를 처리할 수도 있습니다.

try:

   You do your operations here;

   ......................

except(Exception1[, Exception2[,...ExceptionN]]]):

   If there is any exception from the given exception list

   then execute this block.

   ......................

else:

   If there is no exception then execute this block.

try-finally 문

try- finally 문은 예외 발생 여부에 관계없이 마지막 코드를 실행합니다.

try:

finally:

    #退出try时总会执行

raise

참고: Except 문이나 finally 문을 사용하되 동시에 둘 다 사용하지 마십시오. else 문은 finally 문

#!/usr/bin/python

try:

과 함께 사용할 수 없습니다.    fh = open("testfile""w")

   fh.write("This is my test file for exception handling!!")

finally:

   print "Error: can't find file or read data"

열린 파일에 쓰기 권한이 없으면 출력은 다음과 같습니다.

Error: can't find fileorread data

#!/usr/bin/python

🎜>try:

   fh =open("testfile""w")

   try:

      fh.write("This is my test file for exception handling!!" )

   print "Error: can't find file or read data"

try 블록에서 예외가 발생하면 finally 블록 코드가 즉시 실행됩니다.

finally 블록의 모든 문이 실행된 후 다시 예외가 발생하고 Except 블록 코드가 실행됩니다.

매개변수의 내용이 예외사항과 다릅니다.

예외 매개변수

예외에는 출력 예외 정보 매개변수로 사용할 수 있는 매개변수가 있을 수 있습니다.

다음과 같이 Except 문을 통해 예외 매개변수를 캡처할 수 있습니다.

try:

   You do your operations here;

   ......................

except ExceptionType, Argument:

   You can print value of Argument here...

변수에서 받는 예외 값은 일반적으로 예외 문에 포함됩니다. 튜플 형태의 변수는 하나 이상의 값을 받을 수 있습니다.

튜플에는 일반적으로 잘못된 문자열, 잘못된 숫자, 잘못된 위치가 포함됩니다.

인스턴스

다음은 단일 예외의 예입니다.

#!/usr/bin/python

# Define a function here.

def temp_convert(var):

   try:

      returnint(var)

   except ValueError, Argument:

      print"The argument does not contain numbersn", Argument

# Call above function here.

temp_convert("xyz");

실행 결과 위의 프로그램은 다음과 같습니다.

The argument does not contain numbers

invalid literal for int() with base 10'xyz'

예외 발생

raise 문을 사용하여 예외를 직접 발생시킬 수 있습니다

raise 구문 형식은 다음과 같습니다.

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

문의 예외는 예외 유형(예: NameError)이고 매개 변수는 예외 매개 변수 값입니다. 이 매개변수는 선택사항입니다. 제공되지 않은 경우 예외 매개변수는 "None"입니다.

마지막 인수는 선택 사항이며(실제로는 거의 사용되지 않음) 존재하는 경우 추적 예외 개체입니다.

인스턴스

예외는 문자열, 클래스 또는 개체일 수 있습니다. Python 커널에서 제공되는 대부분의 예외는 클래스 인스턴스의 매개변수인 인스턴스화된 클래스입니다.

예외 정의는 다음과 같이 매우 간단합니다.

def functionName( level ):

   if level <code>1:

      raise "Invalid level!", level

      # The code below to this would not be executed

      # if we raise the exception

참고: 예외를 포착하려면 "제외" 문에서 동일한 예외를 사용하여 클래스 개체 또는 문자열을 발생시켜야 합니다.

예를 들어 위의 예외를 catch하는 경우 "제외" 문은 다음과 같습니다.

try:

    Business Logic here...

except "Invalid level!":

   Exception handling here...

else:

   Rest of the code here...

사용자 정의 예외

새 예외 클래스를 생성하면 프로그램에서 고유한 예외 이름을 지정할 수 있습니다. 예외는 일반적으로 Exception 클래스에서 직접 또는 간접적으로 상속되어야 합니다.

다음은 RuntimeError와 관련된 예제입니다. 예제에는 예외가 발생했을 때 자세한 정보를 출력하는 데 사용되는 기본 클래스인 RuntimeError가 생성됩니다.

try 문 블록에서는 사용자 정의 예외 이후에 Except 블록 문이 실행됩니다. 변수 e는 Networkerror 클래스의 인스턴스를 만드는 데 사용됩니다.

class Networkerror(RuntimeError):

   def __init__(self, arg):

      self.args = arg

위 클래스를 정의한 후 다음과 같이 예외를 트리거할 수 있습니다.

try:

   raise Networkerror("Bad hostname")

except Networkerror,e:

   print e.args

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

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.