Heim  >  Artikel  >  Backend-Entwicklung  >  Einführung in Python-Fehler, Ausnahmen und Programm-Debugging-Methoden (mit Code)

Einführung in Python-Fehler, Ausnahmen und Programm-Debugging-Methoden (mit Code)

不言
不言nach vorne
2019-04-11 11:59:143435Durchsuche

Dieser Artikel bietet Ihnen eine Einführung in Python-Fehler, Ausnahmen und Programm-Debugging-Methoden (mit Code). Ich hoffe, dass er für Sie hilfreich ist.

Ausnahmen sind Fehler, die von Python-Programmen während der Ausführung verursacht werden. Wenn im Programm eine nicht behandelte Ausnahme ausgelöst wird, wird das Programm aufgrund der Ausnahme beendet. Nur durch das Hinzufügen einer Ausnahmebehandlung zum Programm kann das Programm „robuster“ sein ".

Python verfügt über eine eigene grammatikalische Form für die Behandlung von Ausnahmen und das Programm-Debuggen. Die Hauptinhalte sind:

  • Listenelemente
  • Liste Elemente
  • Syntaxfehler;
  • Das Konzept der Ausnahmen;
  • Verwenden Sie Try-Anweisungen, um Ausnahmen abzufangen;
  • Behandlung häufiger Ausnahmen;
  • Benutzerdefinierte Ausnahme;
  • Verwenden Sie pdb zum Debuggen von Python-Programmen.

7.1 Syntaxfehler

1. Rechtschreibfehler

beziehen sich auf falsch geschriebene Schlüsselwörter in der Python-Sprache, falsch geschriebene Variablennamen, Funktionsnamen usw.

Wenn das Schlüsselwort falsch geschrieben ist, wird SyntaxError(语法错误) angezeigt, und wenn der Variablenname oder Funktionsname falsch geschrieben ist, wird zur Laufzeit eine NameError的错误-Eingabeaufforderung ausgegeben 🎜>2. Das Skriptprogramm entspricht nicht den Syntaxspezifikationen von Python

, wie etwa fehlenden Klammern, Doppelpunkten und anderen Symbolen sowie falsch geschriebenen Ausdrücken.

3. Einrückungsfehler

Weil die Python-Syntax vorschreibt, dass Einrückung eine der Syntaxen des Programms ist, was ein einzigartiger Aspekt der Python-Sprache sein sollte. Im Allgemeinen beträgt der Standardeinzug von Python 4 Leerzeichen. Natürlich können Sie Tab nach Ihren eigenen Gewohnheiten verwenden. Allerdings sollte im gleichen Programm oder Projekt einheitlich derselbe Einrückungsstil verwendet werden.

7.2 Ausnahmebehandlung

Ausnahmen sind Fehler, die von Python-Programmen während der Ausführung verursacht werden. Wenn im Programm eine nicht behandelte Ausnahme ausgelöst wird, wird das Skript aufgrund der Ausnahme beendet. Nur wenn diese Ausnahmen im Programm abgefangen und die entsprechende Verarbeitung durchgeführt werden, kann das Programm nicht unterbrochen werden.

7.2.1 Grundlegende Syntax für die Ausnahmebehandlung

Die try-Anweisung wird in Python zur Behandlung von Ausnahmen verwendet. Auch die try-Anweisung verwendet eine Einrückungsstruktur verfügt über einen optionalen Selected else-Anweisungsblock. Die Grundform einer allgemeinen try-Anweisung lautet wie folgt.
try:
     <语句(块)>            #可能产生异常的语句(块)
  except <异常名1>:          #要处理的异常
     <语句(块)>            #异常处理语句
  except <异常名2>:          #要处理的异常
     <语句(块)>            #异常处理语句
  else:
     <语句(块)>            #未触发异常,则执行该语句(块)
  finally:
     <语句(块)>            #始终执行该语,一般为了达到释放资源等目的
  

In praktischen Anwendungen können einige Anweisungen entsprechend den Anforderungen des Programms verwendet werden:

Form 1:

try:
     <语句(块)>
  except <异常名1>:
     <语句(块)>
  
Beispiel:

def testTry (index, flag=False):
     stulst = ["John","Jenny","Tom"]
     if flag:                         #flag为True时,捕获异常
        try:
           astu = stulst [index]
        except IndexError:
           print("IndexError")
        return "Try Test Finished!"
     else:                            #flag为False时,不捕获异常
        astu =stulst [index]
        return "No Try Test Finished!"
  print("Right params testing start...")
  print (testTry (1, True))           #不越界参数,捕获异常(正常)
  print (testTry (1, False))          #不越界参数,不捕获异常(正常)
  print("Error params testing start...")
  print (testTry (4, True))           #越界参数,捕获异常(正常)
  print (testTry (4, False))          #越界参数,不捕获异常(程序运行会中断)
  
Formular 2: 

 try:
        <语句(块)>
     except < 异常名1>:
        <语句(块)>
     finally:
        <语句(块)>
 
Beispiel:

def testTryFinally (index):
     stulst = ["John","Jenny", "Tom"]
     af = open ("my.txt", 'wt+')
     try:
        af.write(stulst[index])
     except:
        pass
     finally:
        af.close()               #无论是否产生越界异常,都关闭文件
        print("File already had been closed!")
  print('No IndexError...')
  testTryFinally (1)             #无越界异常,正常关闭文件
  print('IndexError...')
  testTryFinally (4)             #有越界异常,正常关闭文件
7.2 .2 Die wichtigsten integrierten Ausnahmen von Python und ihre Behandlung Häufige Ausnahmen in Python wurden vordefiniert. In der interaktiven Umgebung werden mit dem Befehl dir (__builtins__) alle vordefinierten Ausnahmen angezeigt.

except语句主要有以下几种用法

except:                              #捕获所有异常;
except <异常名>:                      #捕获指定异常;
except (异常名1,异常名2):            #捕获异常名1或者异常名2;
except <异常名> as <数据>:            #捕获指定异常及其附加的数据;
except(异常名1,异常名2)as <数据>:  #捕获异常名1或者异常名2及异常的附加数据。

7.3 手工抛出异常

为了程序的需要,程序员还可以自定义新的异常类型,例如对用户输入文本的长度有要求,则可以使用raise引发异常,以确保文本输入的长度符合要求。

7.3.1 用raise手工抛出异常

使用raise引发异常十分简单,raise有以下几种使用方式。

  raise 异常名
  raise 异常名,附加数据
  raise 类名
使用raise可以抛出各种预定的异常,即使程序在运行时根本不会引发该异常。

def testRaise2():
        for i in range (5):
             try:
                if i==2:    #i==2抛出NameError异常
                  raise NameError
             except NameError:
                print('Raise a NameError!')
             print (i)
        print('end...')

testRaise2 ()

运行结果:

0
1
Raise a NameError!
2
3
4
end...

7.3.2 assert语句

assert语句的一般形式如下。

assert <条件测试>, <异常附加数据>           #其中异常附加数据是可选的

assert语句是简化的raise语句,它引发异常的前提是其后面的条件测试为假。

举例:

def testAssert():
     for i in range (3):
        try:
           assert i<2
        except AssertionError:
           print('Raise a AssertionError!')
        print (i)
     print('end...')

  testAssert()

运行结果:

0
1
Raise a AssertionError!
2
end...

assert语句一般用于在程序开发时测试代码的有效性。比如某个变量的值必须在一定范围内,而运行时得到的值不符合要求,则引发该异常,对开发者予以提示。所以一般在程序开发中,不去捕获这个异常,而是让它中断程序。原因是程序中已经出现了问题,不应继续运行。

assert语句并不是总是运行的,只有Python内置的一个特殊变量__debug__为True时才运行。要关闭程序中的assert语句就使用python-O(短画线,后接大写字母O)来运行程序。

7.3.3 自定义异常类

在Python中定义异常类不用从基础完全自己定义,只要通过继承Exception类来创建自己的异常类。异常类的定义和其他类没有区别,最简单的自定义异常类甚至可以只继承Exception类,类体为pass如:

class MyError (Exception):          #继承Exception类
     pass

如果需要异常类带有一定的提示信息,也可以重载__init__和__str__这两个方法。【相关推荐:python视频教程

Das obige ist der detaillierte Inhalt vonEinführung in Python-Fehler, Ausnahmen und Programm-Debugging-Methoden (mit Code). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:segmentfault.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen