Exceptions aus C: Sourcefile, Zeilennummern

11/06/2010 - 09:48 von Ole Streicher | Report spam
Hallo Gruppe,

ich habe (in einem selbstgeschriebenen Package) eine über die C-API
eingebundene Library, die mir in bestimmten Fàllen einen Fehlercode,
Dateinamen, Zeilennummer und Funktionsname einer C-Funktion
zurueckgibt. Daraus möchte ich gerne eine "schoene" Python-Exception
machen.

Die Idee wàre, dass man im Fehlerfall auf der Konsole nicht nur den
Stacktrace bis in das C-Interface angezeigt bekommt, sondern auch in die
Library hinein"tracen" kann.

Ist das sinnvoll und wenn ja: wie sollte man das machen? Ich würde das
gerne auf "Python-Ebene" erledigen, d.h. nicht direkt in der C-API.

Viele Grüße

Ole
 

Lesen sie die antworten

#1 Thomas Rachel
15/06/2010 - 11:58 | Warnen spam
Am 11.06.2010 09:48, schrieb Ole Streicher:
Hallo Gruppe,

ich habe (in einem selbstgeschriebenen Package) eine über die C-API
eingebundene Library, die mir in bestimmten Fàllen einen Fehlercode,
Dateinamen, Zeilennummer und Funktionsname einer C-Funktion
zurueckgibt. Daraus möchte ich gerne eine "schoene" Python-Exception
machen.



Bis dahin sollte es kein Problem sein.


Die Idee wàre, dass man im Fehlerfall auf der Konsole nicht nur den
Stacktrace bis in das C-Interface angezeigt bekommt, sondern auch in die
Library hinein"tracen" kann.



Das hingegen wird vermutlich nichts, da man einen Stackframe (m. W.)
nicht einfach so erzeugen kann. D. h. am besten baust Du Dir einen
eigenen Exception-Typ, der die vier genannten Datenfelder enthàlt. Diese
Exception wird dann geworfen, wenn ein solcher Fehler auftritt. Der
Stacktrace enthàlt Python-Informationen, die Exception-Anzeige selbst
könnte dann bei Bedarf (via __str__()) auch den "C-Traceback" enthalten.


Thomas

Ähnliche fragen