Mengapa C Tidak Menggunakan Pengecualian Bersarang untuk Membenarkan Balingan daripada Pemusnah?
Walaupun pada umumnya tidak digalakkan untuk membuang pengecualian daripada pemusnah, terdapat telah menjadi cadangan untuk menggunakan pengecualian bersarang dalam senario sedemikian. Walau bagaimanapun, idea ini tidak dilaksanakan kerana had tertentu.
Nested Exceptions vs. std::terminate
Apabila pengecualian dilemparkan daripada pemusnah, pengecualian lain mungkin "dalam penerbangan." Pengecualian bersarang membenarkan berbilang pengecualian untuk disusun, tetapi dalam kes ini, cara untuk mengendalikan situasi ini tidak jelas dengan segera. Dari segi sejarah, telah diputuskan bahawa std::terminate (atau pengendali yang berkaitan std::terminate_handler) harus dipanggil.
Had Pengecualian Bersarang
Walaupun pengecualian bersarang boleh berpotensi menyelesaikan isu lontaran daripada pemusnah, terdapat batasan praktikal:
Status Semasa dan Prospek Masa Depan
Setakat C 11 dan C 14, pengecualian bersarang ialah tidak digunakan untuk melontar daripada pemusnah. std::terminate kekal sebagai tingkah laku lalai. Walau bagaimanapun, ini mungkin tertakluk kepada perubahan dalam versi C masa hadapan jika potensi prestasi dan isu keserasian diselesaikan.
Pendekatan Alternatif
Daripada membuang daripada pemusnah, pendekatan alternatif boleh dipertimbangkan:
Atas ialah kandungan terperinci Mengapa C Tidak Menggunakan Pengecualian Bersarang untuk Balingan Pemusnah?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!