Dalam C , blok cuba-tangkap digunakan untuk mengendalikan pengecualian yang dilemparkan oleh kod. Blok ini serupa dengan blok di Java, tetapi terdapat beberapa perbezaan.
Salah satu perbezaan utama ialah C tidak mempunyai pengecualian lengkap seperti Java. Di Java, anda boleh menggunakan blok tangkapan (Throwable t) untuk menangkap semua pengecualian. Walau bagaimanapun, dalam C , anda mesti menangkap setiap jenis pengecualian secara eksplisit.
Ini boleh menjadi masalah jika anda tidak tahu jenis pengecualian yang mungkin dilemparkan. Dalam kes ini, anda boleh menggunakan blok tangkapan (...) untuk menangkap semua pengecualian. Walau bagaimanapun, ini biasanya dianggap sebagai amalan buruk.
Pendekatan yang lebih baik adalah untuk menangkap jenis pengecualian tertentu. Ini membolehkan anda mengendalikan setiap pengecualian dengan sewajarnya. Sebagai contoh, anda boleh menangkap std::exception untuk pengecualian yang diperoleh daripada kelas std::exception. Anda juga boleh menangkap jenis pengecualian tertentu, seperti std::runtime_error atau std::bad_alloc.
Berikut ialah contoh cara untuk menangkap jenis pengecualian tertentu:
<code class="cpp">try { // ... } catch (const std::exception& ex) { // ... } catch (const std::runtime_error& ex) { // ... } catch (const std::bad_alloc& ex) { // ... }</code>
Ini contoh menangkap tiga jenis pengecualian yang berbeza: std::exception, std::runtime_error, dan std::bad_alloc. Jika mana-mana pengecualian ini dilemparkan, blok tangkapan yang sepadan akan dilaksanakan.
Jika anda tidak tahu jenis pengecualian yang mungkin dilemparkan, anda boleh menggunakan blok tangkapan (...) untuk menangkap semua pengecualian. Walau bagaimanapun, ini biasanya tidak disyorkan. Adalah lebih baik untuk menangkap jenis pengecualian tertentu supaya anda boleh mengendalikannya dengan sewajarnya.
Atas ialah kandungan terperinci Bagaimanakah Pengendalian C Exception Berbeza daripada Pengendalian Pengecualian Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!