tidak mungkin (dalam C ++) untuk menangkap semua pengecualian dengan cara yang portabel. Ini karena beberapa pengecualian bukan pengecualian dalam konteks C ++. Ini termasuk hal-hal seperti pembagian dengan kesalahan nol dan lain-lain. Dimungkinkan untuk meretas dan dengan demikian mendapatkan kemampuan untuk melemparkan pengecualian ketika kesalahan ini terjadi, tetapi itu tidak mudah dilakukan dan tentu saja tidak mudah untuk mendapatkan yang benar dengan cara yang portabel.
Jika Anda ingin menangkap semua pengecualian STL, Anda dapat melakukannya
try { ... } catch( const std::exception &e) { ... }
Yang akan memungkinkan Anda menggunakan e.what()
, yang akan mengembalikan const char*
, yang dapat memberi tahu Anda lebih banyak tentang pengecualian itu sendiri. Ini adalah konstruk yang menyerupai konstruk Jawa, yang paling sering Anda tanyakan.
Ini tidak akan membantu Anda jika seseorang cukup bodoh untuk melemparkan pengecualian yang tidak diwarisi darinya std::exception
.