В каждой из моих основных функций я хотел бы поймать определенные классы исключений и преобразовать их в коды выхода.Неявная попытка {} catch вокруг main
Есть ли более элегантное решение для этого, чем запуск и завершение каждой основной функции с помощью макросов, которые будут вставлять неявные try {} catch
Я хочу?
Могу ли я как-то добиться этого с помощью функции std::set_terminate
?
Пример:
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; }
}
Все ваши исключения связаны с наследством (или они могут быть?) – quamrana
@quamrana Да. На самом деле это может быть только один виртуальный базовый класс. – PSkocik
Затем вы можете включить каждый класс исключений в код возврата, а один try/catch в 'main()' может извлечь его и вернуть. – quamrana