Pengendalian pengecualian dan ujian unit adalah amalan penting untuk memastikan keteguhan kod C++. Pengecualian dikendalikan melalui blok cuba-tangkap dan kod melompat ke blok tangkapan apabila pengecualian dilemparkan. Ujian unit mengasingkan ujian kod untuk mengesahkan bahawa pengendalian pengecualian berfungsi seperti yang diharapkan dalam keadaan yang berbeza. Kes praktikal: Fungsi sumArray mengira jumlah elemen tatasusunan dan membuang pengecualian untuk mengendalikan tatasusunan input kosong. Ujian unit mengesahkan kelakuan yang dijangkakan fungsi dalam keadaan tidak normal, seperti membuang pengecualian std::invalid_argument apabila tatasusunan kosong. Kesimpulan: Dengan memanfaatkan pengendalian pengecualian dan ujian unit, kami boleh mengendalikan pengecualian, menghalang kod daripada ranap dan memastikan bahawa kod berkelakuan seperti yang diharapkan dalam keadaan tidak normal. . Ujian tunggal ialah amalan penting untuk mengesahkan ketepatan kod. Artikel ini meneroka cara menggunakan pengecualian dan ujian unit untuk memastikan kewarasan kod C++ anda.
Pengendalian pengecualian
Pengecualian dalam C++ dikendalikan melalui blok try-catch
.
try { // 可能会引发异常的代码 } catch (const std::exception& e) { // 异常处理代码 }
try
, jika mana-mana kod memberikan pengecualian, atur cara akan melompat ke blok catch
yang sepadan. Ujian Unit
Ujian unit ialah ujian kod terpencil yang mengesahkan bahawa ciri tertentu berfungsi seperti yang diharapkan. Untuk pengendalian pengecualian, ujian tunggal boleh digunakan untuk memastikan fungsi berfungsi mengikut cara yang diingini dalam keadaan tidak normal.TEST(ExceptionTest, TestThrow) { MyClass obj; EXPECT_THROW(obj.doSomethingThatThrows(), std::exception); }
MyClass::doSomethingThatThrows()
membuang std::exception
. Kes praktikaltry-catch
块处理。
int sumArray(const int* array, size_t size) { if (size == 0) { throw std::invalid_argument("数组为空"); } // 计算数组元素的总和 int sum = 0; for (size_t i = 0; i < size; ++i) { sum += array[i]; } return sum; }
在 try
块中,如果任何代码引发异常,程序将跳转到相应的 catch
块。
单元测试
单测是隔离的代码测试,用于验证特定功能是否按预期工作。对于异常处理,单测可用于确保函数在异常情况下以所需方式运行。
TEST(SumArrayTest, TestEmptyArray) { int array[] = {}; EXPECT_THROW(sumArray(array, 0), std::invalid_argument); }
此测试断言 MyClass::doSomethingThatThrows()
函数将引发 std::exception
。
实战案例
需求:计算数组中元素的总和,如果输入数组为空,抛出异常。
rrreee单元测试:
rrreee此测试验证当输入数组为空时,sumArray
函数会抛出 std::invalid_argument
Keperluan: Kira jumlah elemen dalam tatasusunan, dan buang pengecualian jika tatasusunan input kosong.
rrreeeUjian unit: 🎜🎜rrreee🎜Ujian ini mengesahkan bahawa fungsisumArray
membuang pengecualian std::invalid_argument
apabila tatasusunan input kosong. 🎜🎜🎜Kesimpulan🎜🎜🎜Dengan memanfaatkan rangka kerja pengendalian pengecualian dan ujian unit C++, kami boleh memastikan kewarasan kod kami, mengendalikan pengecualian dan mencegah ranap aplikasi. Pengendalian pengecualian membolehkan kami melaporkan ralat dan memulihkan kepada keadaan baik yang diketahui, manakala ujian unit boleh mengesahkan bahawa kod tersebut berfungsi dengan betul dalam keadaan ini. 🎜Atas ialah kandungan terperinci Pengecualian fungsi C++ dan ujian tunggal: memastikan kekukuhan kod. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!