Pengendalian pengecualian menguruskan ralat dalam fungsi melalui pernyataan lempar dan tangkap. Pernyataan lontaran mencetuskan pengecualian, dan pernyataan tangkapan menangkap pengecualian berdasarkan jenis pengecualian. Adalah penting untuk menangkap pengecualian pada awal fungsi anda dan memberikan mesej ralat yang jelas. Pilih jenis pengecualian yang betul, gunakan blok tangkapan generik dengan berhati-hati dan kendalikan pengecualian yang tidak diketahui dengan sewajarnya dalam blok tangkapan generik.
Menyelesaikan masalah pengecualian fungsi C++: Memahami intipati pengendalian ralat
Pengendalian pengecualian adalah penting untuk mengendalikan ralat dan pengecualian dalam fungsi. Pengecualian dalam C++ dilaksanakan melalui pernyataan throw
dan catch
. throw
和 catch
语句实现。
throw
语句
throw
语句用于触发异常。它接收一个可抛出对象作为参数,该对象可以是标准异常类型(如 std::runtime_error
)或自定义异常类型。
catch
语句
catch
语句用于捕获异常。它接受异常类型或泛型异常类型(std::exception
)作为参数。如果抛出的异常类型与 catch 块的参数类型匹配,则执行 catch 块。
实战案例
考虑一个函数,该函数计算两个数字的除法:
double divide(double num1, double num2) { if (num2 == 0) { throw std::runtime_error("除数不能为 0"); } return num1 / num2; }
现在考虑一个调用该函数并处理异常的主函数:
int main() { try { double result = divide(10, 2); std::cout << "结果:" << result << std::endl; } catch (std::runtime_error& e) { std::cout << "错误:" << e.what() << std::endl; } catch (...) { std::cout << "未知错误" << std::endl; } return 0; }
如果 num2 为 0,则 divide
函数将抛出 std::runtime_error
异常。主函数中的第一个 catch
块将捕获该异常并打印错误消息。如果抛出其他类型的异常,则将执行第二个 catch 块并打印“未知错误”。
理解错误处理精髓
catch (...)
std::runtime_error
) atau jenis pengecualian tersuai. catch
pernyataan 🎜🎜🎜 catch
pernyataan digunakan untuk menangkap pengecualian. Ia menerima jenis pengecualian atau jenis pengecualian generik (std::exception
) sebagai parameter. Jika jenis pengecualian yang dilemparkan sepadan dengan jenis hujah blok tangkapan, blok tangkapan akan dilaksanakan. 🎜🎜🎜Contoh Praktikal🎜🎜🎜Pertimbangkan fungsi yang mengira pembahagian dua nombor: 🎜rrreee🎜Sekarang pertimbangkan fungsi utama yang memanggil fungsi dan mengendalikan pengecualian: 🎜rrreee🎜Jika nombor2 ialah 0, maka std::runtime_error
. Blok catch
pertama dalam fungsi utama akan menangkap pengecualian dan mencetak mesej ralat. Jika jenis pengecualian lain dilemparkan, blok tangkapan kedua akan dilaksanakan dan "Ralat Tidak Diketahui" akan dicetak. 🎜🎜🎜Fahami intipati pengendalian ralat🎜🎜Atas ialah kandungan terperinci Menyelesaikan masalah pengecualian fungsi C++: Fahami intipati pengendalian ralat. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!