Announcement

Collapse
No announcement yet.

ThrowExceptionName funktioniert nicht wie erwartet

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • ThrowExceptionName funktioniert nicht wie erwartet

    Hallo !

    Ich versuche gerade in meinen catch-Zweigen auf den Namen und die Zeilennummer der aufgetretenen Exceptions mittels __ThrowExceptionName & __ThrowLineNumber() zuzugreifen.

    Ich habe except.h eingebunden und auch die Option -xp in der Datei gesetzt (#pragma option -xp). Auch ist in den Projektoptionen der Haken bei "Ort des Auftretens" gesetzt.

    Mein Problem ist nun, daß __ThrowExceptionName() leere Werte liefert, wenn eine Exception provoziert wird.

    void foo (void)
    {
    int a;

    try
    {
    a = IntToStr("Hallo");

    }
    catch(Exception &e)
    {
    ShowMessage( e.Message + "\n\n"
    + "An exception of type " + __ThrowExceptionName()
    + AnsiString(__ThrowLineNumber())
    + "\nof file " + __ThrowFileName() );

    }
    }

    Es funktioniert, wenn man selbst eine Exception mit throw auslöst, aber das ist doch nicht der Sinn der Sache, oder ?!

    void foo2 (void)
    {
    int a;

    try
    {
    throw Exception("Ich bin eine Exception");
    }
    catch(Exception &e)
    {
    ShowMessage( e.Message + "\n\n"
    + "An exception of type " + __ThrowExceptionName()
    + AnsiString(__ThrowLineNumber())
    + "\nof file " + __ThrowFileName() );

    }
    }

    Was mache ich falsch?
    Ich will doch den Ort von Exceptions wissen, welche ich noch nicht kenne, nicht meine selbst erzeugten... :-)

    Michael

  • #2
    Ich hab' selbst die Lösung gefunden...

    Für Funktionen aus externen Packages sind die Funktionen __ThrowExceptionName() & __ThrowLineNumber() ja garnicht bekannt...

    Dort kann also keine Info über die Quellcodezeile kommen herkommen :-)

    Es funktioniert natürlich nur bei Exceptions, welche in "meinen" Funktionen direkt (!) ausgelöst werden (z.B. durch falschen Zeiger).

    Gruß Michae

    Comment


    • #3
      Hier wurde es auch gefunden:

      http://www.c-plusplus.de/forum/viewtopic-var-t-is-97475.htm
      Christian

      Comment

      Working...
      X