In jeder meiner Hauptfunktionen möchte ich bestimmte Klassen von Ausnahmen abfangen und sie in Exit-Codes konvertieren.Ein impliziter Versuch {} catch around main
Gibt es eine elegantere Lösung als das Starten und Beenden jeder Hauptfunktion mit Makros, die die implizite try {} catch
Ich möchte einfügen?
Kann ich das irgendwie mit der std::set_terminate
Funktionalität erreichen?
Beispiel:
int main(){
try { //<- insert this
/*
the business logic goes here
*/
//-> and insert this
}
catch(const Someclass1& e){ return 2; }
catch(const Someclass2& e){ return 3; }
//...
catch(...){ return 1; }
}
Sind alle Ihre Ausnahmen durch Vererbung (oder könnten sie?) – quamrana
@quamrana Ja. Es könnte tatsächlich nur eine einzige virtuelle Basisklasse sein. – PSkocik
Sie können dann jede Ausnahmeklasse den Return-Code einbetten lassen und ein einzelnes try/catch in 'main()' könnte es extrahieren und zurückgeben. – quamrana