неможливо (на C ++) перехоплювати всі винятки портативно. Це тому, що деякі винятки не є винятками в контексті C ++. Сюди входять такі речі, як поділ на нульові помилки та інші. Можна зламати і, таким чином, отримувати можливість кидати винятки, коли трапляються ці помилки, але це зробити непросто і, звичайно, непросто отримати право на портативний спосіб.
Якщо ви хочете знайти всі винятки STL, ви можете зробити це
try { ... } catch( const std::exception &e) { ... }
Що дозволить вам використовувати e.what()
, що поверне a const char*
, що може розповісти більше про сам виняток. Це та конструкція, яка найбільше нагадує конструкцію Java, про яку ви питали найбільше.
Це вам не допоможе, якщо хтось досить дурний, щоб кинути виняток, від якого не успадковується std::exception
.