Rumah > Artikel > pembangunan bahagian belakang > Untuk Menangkap Mengikut Nilai atau Rujukan dalam C : Bilakah Satu Lebih Baik Daripada Yang Lain?
Catch Blocks dalam C : Nilai vs. Rujukan
Dalam C , terdapat pilihan yang perlu dibuat antara menangkap pengecualian mengikut nilai atau rujukan . Keputusan ini boleh memberi kesan kepada tingkah laku dan ketepatan kod.
Amalan Standard
Amalan standard untuk pengecualian dalam C ialah membuang mengikut nilai dan menangkap melalui rujukan.
Menakul akal
Menangkap mengikut nilai boleh menjadi masalah jika terdapat hierarki warisan. Pertimbangkan contoh berikut:
class CustomException { public: int errorCode; }; class MyException : public CustomException { public: MyException() { errorCode = 5; } };
Jika MyException dilemparkan dan ditangkap mengikut nilai, ia akan ditukar kepada contoh CustomException, menyebabkan kod ralat ditetapkan kepada 0. Ini boleh membawa kepada tingkah laku yang tidak dijangka.
Menangkap melalui Rujukan
Dengan menangkap pengecualian dengan rujukan, pengecualian asal yang dilemparkan dikekalkan, membenarkan akses tepat kepada sifat pengecualian. Dalam contoh di atas, menangkap MyException &e memastikan bahawa kod ralat kekal ditetapkan kepada 5.
Bila Menangkap Mengikut Nilai
Terdapat situasi yang jarang berlaku di mana penangkapan mengikut nilai mungkin menjadi lebih baik, seperti apabila:
Pengesyoran
Secara umum, adalah sangat disyorkan untuk mengikuti amalan standard membaling mengikut nilai dan menangkap melalui rujukan untuk memastikan pengendalian pengecualian yang betul, terutamanya dalam konteks pewarisan.
Atas ialah kandungan terperinci Untuk Menangkap Mengikut Nilai atau Rujukan dalam C : Bilakah Satu Lebih Baik Daripada Yang Lain?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!