Rumah >pembangunan bahagian belakang >C++ >Tangkapan mengikut Nilai atau Rujukan: Bilakah Anda Harus Pilih Yang Mana dalam C ?
Bila Mendapat Pengecualian mengikut Nilai atau Rujukan: Panduan Amalan Terbaik
Dalam C , terdapat dua cara biasa untuk mengendalikan pengecualian: menangkap mengikut nilai dan menangkap melalui rujukan. Timbul persoalan tentang pendekatan mana yang lebih disukai dalam senario yang berbeza.
Menurut amalan standard untuk pengecualian dalam C , pendekatan yang betul ialah melempar mengikut nilai dan menangkap melalui rujukan. Mari kita terokai sebab di sebalik pengesyoran ini:
Lempar Mengikut Nilai:
Tangkap melalui Rujukan:
Penangkapan Mengikut Nilai Bermasalah dengan Hierarki Warisan:
Andaikan anda mempunyai kelas pengecualian CustomException dan kelas terbitan MyException yang mengatasi sifat atau kaedah tertentu . Apabila anda menangkap pengecualian mengikut nilai, seperti dalam contoh di bawah:
try { ... } catch (CustomException e) { ... }
Jika objek MyException dilemparkan, ia akan ditukar kepada contoh CustomException apabila ditangkap, yang berpotensi mengakibatkan kehilangan sifat terbitan atau tingkah laku.
Contoh:
Jika MyException mengatasi ahli error_code, menangkap mengikut nilai akan menyebabkan perubahan yang tidak dijangka dalam kod ralat apabila objek MyException dilemparkan.
Dalam Ringkasan:
Untuk kebanyakan senario, amalan yang disyorkan adalah untuk membuang pengecualian mengikut nilai dan menangkapnya dengan rujukan untuk mengelakkan potensi isu dengan hierarki warisan. Ini memastikan integriti data pengecualian dan membenarkan akses terus kepada objek pengecualian dalam blok tangkapan.
Atas ialah kandungan terperinci Tangkapan mengikut Nilai atau Rujukan: Bilakah Anda Harus Pilih Yang Mana dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!