невозможно (в C ++) перехватить все исключения в переносимой форме. Это связано с тем, что некоторые исключения не являются исключениями в контексте C ++. Это включает в себя такие вещи, как деление на ноль ошибок и другие. Можно взломать и, таким образом, получить возможность генерировать исключения, когда эти ошибки случаются, но это нелегко сделать и, конечно, нелегко получить правильные результаты в портативном виде.
Если вы хотите перехватить все исключения STL, вы можете сделать
try { ... } catch( const std::exception &e) { ... }
Что позволит вам использовать e.what()
, который вернет const char*
, что может рассказать вам больше о самом исключении. Это конструкция, которая больше всего напоминает конструкцию Java, о которой вы спрашивали.
Это не поможет вам, если кто-то настолько глуп, чтобы выдать исключение, которое не наследуется от std::exception
.