Exceptions unter Linux



  • Wenn ich ich Exception werfe und diese nicht fange wird das Programm beendet. Das Programm gibt auf der Shell leider noch folgende Meldung aus:

    terminate called after throwing an instance of 'ClassName'
    Aborted
    

    Gibt es eine Möglichkeit diesen Text zu unterbinden? Wenn ich ein exit() in meiner Exception-Klasse einbaue, kann ich sie leider auch nicht fangen. 😞 Gibt es dafür spezielle Möglichkeiten oder Schalter für den GCC?



  • Fang die Exception doch einfach.

    Notfalls mit catch(...) in der main().



  • Dieser Thread wurde von Moderator/in nman aus dem Forum Linux/Unix in das Forum C++ verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • DrGreenthumb schrieb:

    Fang die Exception doch einfach.

    Notfalls mit catch(...) in der main().

    Es geht ja um die Exceptions die nicht gefangen werden sollen, weil die Fehler zum Beispiel an dieser Stelle zu fatal waren.

    Ich würde gerne mitten in der Anwendung eine Exception werfen, die in etwa folgenden C Äquivalent gleicht:

    perror("error");
    exit(1);
    

    Allerdings möchte ich auch die Möglichkeit haben diese Exception zu fangen(also ohne exit()). Ich habe schon rausgefunden wie ich den Text unterbinden kann(eigene Abort Funktion), allerdings würde ich auch noch gerne eine Nachricht ausgeben wenn die Exeption nicht gefangen wird. Aber ich denke das wird wohl nicht möglich sein.



  • catch(...) in der main (Achtung: in den Klammern steht wirklich "..."!) fängt genau alle nicht gefangenen Exceptions auf, das sollte eigentlich die Lösung sein 😉

    int main(void)
    {
      try {
        /* anderer code */
      } catch (...) {
        cerr << "Irgendein Fehler! Fatal!" << endl;
        return 1;
      }
      return 0;
    }
    

Anmelden zum Antworten