Rumah >pembangunan bahagian belakang >C++ >Perlukah Pengecualian Diabaikan dalam Pendekatan 'Api dan Lupakan'?
Fire and Forget: Pertimbangan untuk Pengendalian Pengecualian
Persoalan yang dibangkitkan di sini berkisar tentang pengendalian pengecualian yang sesuai apabila melaksanakan "fire and forget "pendekatan. Cadangan awal menggunakan kaedah sambungan yang hanya menelan pengecualian menimbulkan kebimbangan kerana ia mungkin mengaburkan kemungkinan ralat.
Walau bagaimanapun, jika niatnya benar-benar untuk mengabaikan sebarang pengecualian yang berlaku dalam tugasan, maka kaedah sambungan tak segerak mungkin bukan penyelesaian yang optimum. Menunggu tugasan akan mengalahkan prinsip "api dan lupakan" dengan memperkenalkan pergantungan pada penyiapannya.
Dalam senario ini, kaedah sambungan segerak, seperti yang dicadangkan pada mulanya, adalah lebih sesuai. Walau bagaimanapun, untuk memastikan pengecualian yang dijangkakan tetapi tidak dapat diperhatikan dikendalikan dengan baik, versi kaedah yang lebih terperinci diperlukan.
Sebagai contoh, kaedah berikut mengambil parameter yang mentakrifkan senarai jenis pengecualian yang boleh diterima dan tidak boleh diabaikan:
public static void Forget(this Task task, params Type[] acceptableExceptions) { try { task.Wait(); } catch (Exception ex) { // TODO: consider whether derived types are also acceptable. if (!acceptableExceptions.Contains(ex.GetType())) throw; } }
Pendekatan ini membenarkan pengendalian selektif bagi pengecualian, memastikan bahawa hanya ralat tidak dijangka yang disebarkan.
Adalah penting untuk ambil perhatian bahawa menggunakan kaedah ini tidak benar-benar menjadikan tugasan itu "membakar dan melupakan" dalam erti kata menjadi bebas sepenuhnya daripada penyelesaiannya. Walau bagaimanapun, ia menyediakan cara untuk mengabaikan pengecualian khusus yang merupakan sebahagian daripada gelagat tugas yang diharapkan.
Atas ialah kandungan terperinci Perlukah Pengecualian Diabaikan dalam Pendekatan 'Api dan Lupakan'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!