Galileo Computing < openbook > Galileo Computing - Professionelle Bücher. Auch für Einsteiger.

...powered by haas.homelinux.net...

Inhaltsverzeichnis
1 Einleitung
2 Überblick über Python
3 Die Arbeit mit Python
4 Der interaktive Modus
5 Grundlegendes zu Python-Programmen
6 Kontrollstrukturen
7 Das Laufzeitmodell
8 Basisdatentypen
9 Benutzerinteraktion und Dateizugriff
10 Funktionen
11 Modularisierung
12 Objektorientierung
13 Weitere Spracheigenschaften
14 Mathematik
15 Strings
16 Datum und Zeit
17 Schnittstelle zum Betriebssystem
18 Parallele Programmierung
19 Datenspeicherung
20 Netzwerkkommunikation
21 Debugging
22 Distribution von Python-Projekten
23 Optimierung
24 Grafische Benutzeroberflächen
25 Python als serverseitige Programmiersprache im WWW mit Django
26 Anbindung an andere Programmiersprachen
27 Insiderwissen
28 Zukunft von Python
A Anhang
Stichwort

Download:
- ZIP, ca. 4,8 MB
Buch bestellen
Ihre Meinung?

Spacer
 <<   zurück
Python von Peter Kaiser, Johannes Ernesti
Das umfassende Handbuch - Aktuell zu Python 2.5
Buch: Python

Python
gebunden, mit CD
819 S., 39,90 Euro
Galileo Computing
ISBN 978-3-8362-1110-9
Pfeil 21 Debugging
  Pfeil 21.1 Der Debugger
  Pfeil 21.2 Inspizieren von Instanzen – inspect
    Pfeil 21.2.1 Datentypen, Attribute und Methoden
    Pfeil 21.2.2 Quellcode
    Pfeil 21.2.3 Klassen und Funktionen
  Pfeil 21.3 Formatierte Ausgabe von Instanzen – pprint
  Pfeil 21.4 Logdateien – logging
    Pfeil 21.4.1 Das Meldungsformat anpassen
    Pfeil 21.4.2 Logging Handler
  Pfeil 21.5 Automatisiertes Testen
    Pfeil 21.5.1 Testfälle in Docstrings – doctest
    Pfeil 21.5.2 Unit Tests – unittest
  Pfeil 21.6 Traceback-Objekte – traceback
  Pfeil 21.7 Analyse des Laufzeitverhaltens
    Pfeil 21.7.1 Laufzeitmessung – timeit
    Pfeil 21.7.2 Profiling – cProfile
    Pfeil 21.7.3 Tracing – trace


Galileo Computing - Zum Seitenanfang

21.6 Traceback-Objekte – traceback  topZur vorigen Überschrift

Das Modul traceback existiert zum Umgang mit dem sogenannten Traceback-Objekt. Ein Traceback-Objekt hält den Kontext fest, aus dem eine Exception geworfen wurde, und liefert damit die Informationen, die bei einem Traceback auf dem Bildschirm angezeigt werden. Zu diesen Informationen gehört vor allem die Funktionshierarchie, der sogenannte Callstack. Ein Traceback-Objekt wird beim Werfen einer Exception automatisch erzeugt. Generell können Sie auf das Traceback-Objekt einer gerade abgefangenen Exception über die Funktion sys.exc_info des Moduls sys zugreifen. Im Folgenden sollen die im Modul traceback enthaltenen Funktionen besprochen werden. Dabei werden alle Beispiele im folgenden Kontext ausgeführt:

>>> import traceback 
>>> import sys 
>>> def f1(): 
...     raise TypeError 
... 
>>> def f2(): 
...     f1() 
... 
>>> try: 
...     f2() 
... except TypeError: 
...     tb = sys.exc_info()[2] 
... 
>>> tb 
<traceback object at 0xb7c49414>

Es existiert also ein Traceback-Objekt tb, das den Callstack einer TypeError-Exception beschreibt, die zuvor aus einer verschachtelten Funktionshierarchie heraus geworfen wurde.

traceback.print_tb(traceback[, limit[, file]])

Gibt den Stacktrace des Traceback-Objekts formatiert auf dem Bildschirm aus. Über den optionalen Parameter limit kann angegeben werden, wie viele Einträge des Stacktraces maximal ausgegeben werden sollen. Für den dritten, optionalen Parameter kann ein geöffnetes Dateiobjekt übergeben werden, in das der Stacktrace geschrieben wird. Standardmäßig wird in den Stream sys.stderr geschrieben.

>>> traceback.print_tb(tb) 
  File "<stdin>", line 2, in <module> 
  File "<stdin>", line 2, in f2 
  File "<stdin>", line 2, in f1
traceback.print_exception(type, value, traceback[, limit[, file]])

Diese Funktion gibt einen vollständigen Traceback auf dem Bildschirm aus. Die Ausgabe ist genau so formatiert wie die einer normalen, nicht abgefangenen Exception. Für die beiden zusätzlichen Parameter type und value müssen Exception-Typ und Exception-Wert übergeben werden. Die restlichen Parameter haben dieselbe Bedeutung wie bei print_tb. So könnte beispielsweise der Funktionsaufruf von print_exception im interaktiven Modus folgendermaßen aussehen:

>>> traceback.print_exception(TypeError, "Hallo Welt", tb) 
Traceback (most recent call last): 
  File "<stdin>", line 2, in <module> 
  File "<stdin>", line 2, in f2 
  File "<stdin>", line 2, in f1 
TypeError: Hallo Welt
traceback.print_exc([, limit[, file]])

Wie print_exception, jedoch immer für die aktuell abgefangene Exception. Die Parameter limit und file haben dieselbe Bedeutung wie bei print_tb. Beachten Sie, dass diese Funktion nur innerhalb eines except-Zweiges aufgerufen werden kann.

>>> try: 
...     raise TypeError 
... except TypeError: 
...     traceback.print_exc() 
... 
Traceback (most recent call last): 
  File "<stdin>", line 2, in <module> 
TypeError
traceback.format_exc([limit])

Diese Funktion arbeitet wie print_exc, mit dem Unterschied, dass der formatierte Traceback nicht auf dem Bildschirm bzw. in eine Datei ausgegeben, sondern als String zurückgegeben wird.

traceback.print_last([, limit[, file]])

Diese Funktion arbeitet wie print_exception, jedoch immer für die zuletzt abgefangene Exception. Diese Funktion kann auch außerhalb eines except-Zweiges aufgerufen werden.

>>> traceback.print_last() 
Traceback (most recent call last): 
  File "<stdin>", line 2, in <module> 
  File "<stdin>", line 2, in f2 
  File "<stdin>", line 2, in f1 
TypeError
traceback.extract_tb(traceback[, limit])

Gibt eine Liste von aufbereiteten Stacktrace-Einträgen des Traceback-Objekts traceback zurück. Ein aufbereiteter Stacktrace-Eintrag ist ein Tupel der folgenden Form:

(Dateiname, Zeilennummer, Funktionsname, Text)

Der optionale Parameter limit hat die gleiche Bedeutung wie bei print_tb.

>>> traceback.extract_tb(tb) 
[('<stdin>', 2, '<module>', None), 
('<stdin>', 2, 'f2', None), 
('<stdin>', 2, 'f1', None)]
traceback.format_list(lst)

Die Funktion format_list bekommt eine Liste von Tupeln übergeben, wie sie beispielsweise von der Funktion extract_tb zurückgegeben wird. Aus diesen Informationen erzeugt format_list eine Liste von aufbereiteten Strings der folgenden Form:

>>> traceback.format_list(traceback.extract_tb(tb)) 
['  File "<stdin>", line 2, in <module>\n', 
'  File "<stdin>", line 2, in f2\n', 
'  File "<stdin>", line 2, in f1\n']
traceback.format_exception_only(type, value)

Formatiert eine Exception mit dem Typ type und dem Wert value zu einer Liste von Strings. Jeder der in dieser Liste enthaltenen Strings repräsentiert eine Zeile der Ausgabe.

>>> traceback.format_exception_only(TypeError, "Hallo Welt") 
['TypeError: Hallo Welt\n']
traceback.format_exception(type, value, tb[, limit])

Formatiert eine Exception mit dem Typ type, dem Wert value und dem Stacktrace tb zu einer Liste von Strings. Jeder String dieser Liste repräsentiert eine Zeile der Ausgabe. Der Parameter limit hat die gleiche Bedeutung wie bei der Funktion print_tb.

>>> traceback.format_exception(TypeError, "Hallo Welt", tb)
['Traceback (most recent call last):\n', ' File "<stdin>", line 2, in <module>\n', ' File "<stdin>", line 2, in f2\n', ' File "<stdin>", line 2, in f1\n', 'TypeError: Hallo Welt\n']
traceback.format_tb(tb[, limit])

Der Aufruf dieser Funktion ist äquivalent zu format_list(extract_tb(tb, limit)).



Ihr Kommentar

Wie hat Ihnen das <openbook> gefallen? Wir freuen uns immer über Ihre freundlichen und kritischen Rückmeldungen.






 <<   zurück
  
  Zum Katalog
Zum Katalog: Python






Python
bestellen
 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 Buchtipps
Zum Katalog: Linux






 Linux


Zum Katalog: Ubuntu GNU/Linux






 Ubuntu GNU/Linux


Zum Katalog: Praxisbuch Web 2.0






 Praxisbuch Web 2.0


Zum Katalog: UML 2.0






 UML 2.0


Zum Katalog: Praxisbuch Objektorientierung






 Praxisbuch Objektorientierung


Zum Katalog: Einstieg in SQL






 Einstieg in SQL


Zum Katalog: IT-Handbuch für Fachinformatiker






 IT-Handbuch für Fachinformatiker


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo