Wie kann ich herausfinden, wo ein Objekt instanziiert wurde?

8

Ich versuche zur Laufzeit herauszufinden, wo ein Objekt instanziiert wurde, da dies den Benutzern meiner Bibliothek eine sehr nützliche Fehlermeldung liefern könnte.

Angenommen, wir haben den folgenden Code:

%Vor%

obj wird dann an eine Instanz einer anderen Klasse von mylib übergeben und geht auf eine wunderbare Reise. Irgendwo in der Zeile verursacht obj etwas Schlimmes und ich möchte den Benutzer dorthin verweisen, wo obj instanziiert wurde.

Ich hatte gehofft, ich könnte das Modul inspect verwenden, um herauszufinden, in welcher Datei und mit welcher Zeilennummer obj wurde instanziiert. Leider unterstützen die inspect.getsourcefile und inspect.getsourcelines keine Instanzen. Gibt es einen technischen Grund, warum dies nicht unterstützt wird?

Gibt es eine andere Möglichkeit, die gesuchten Daten zu erhalten?

    
Brecht Machiels 19.01.2013, 09:42
quelle

2 Antworten

8

Sie könnten diese Informationen im Konstruktor Ihrer Klasse aufzeichnen:

%Vor%     
NPE 19.01.2013, 09:54
quelle
0

können Sie das wollen?

%Vor%     
namit 19.01.2013 10:12
quelle

Tags und Links