Gunakan pengendalian pengecualian untuk mendiagnosis dan menyelesaikan masalah: Menangkap pengecualian: Gunakan pernyataan cuba dan tangkap untuk menentukan cara kod anda mengendalikan pengecualian apabila ia berlaku. Jenis pengecualian: Gunakan kelas pengecualian terbina dalam (seperti std::runtime_error) atau kelas pengecualian tersuai untuk menentukan jenis pengecualian. Lempar pengecualian: Gunakan pernyataan lontaran untuk membuang pengecualian dan memberikan maklumat ralat. Diagnostik dan penyelesaian masalah: Objek pengecualian mengandungi mesej ralat dan maklumat untuk membantu mengenal pasti punca masalah. Kes praktikal: Program pembukaan fail menggunakan pengendalian pengecualian untuk menangkap ralat seperti ketiadaan fail atau kebenaran tidak mencukupi dan memberikan maklum balas pengguna.
Menggunakan Pengendalian Pengecualian dalam C++ untuk Diagnostik dan Penyelesaian Masalah
Pengendalian pengecualian ialah mekanisme yang berkuasa dalam C++ untuk mengawal aliran program dengan anggun apabila keadaan tidak dijangka atau salah berlaku. Ia membolehkan pengaturcara menangkap pengecualian dan mengambil tindakan yang sewajarnya, seperti log mesej ralat atau cuba pulih daripada ralat.
Catch exceptions
Untuk menangkap pengecualian, anda boleh menggunakan try
dan catch
pernyataan. Blok try
mengandungi kod sumber di mana pengecualian mungkin berlaku dan blok catch
mengandungi kod yang dilaksanakan apabila pengecualian berlaku. try
和 catch
语句。try
块包含源代码,其中可能发生异常,catch
块包含在异常发生时执行的代码。
try { // 执行可能会引发异常的代码 } catch (const std::exception& e) { // 异常发生时的处理代码 }
异常类型
C++ 标准库提供了多种内置异常类,涵盖常见错误情况。例如:
std::exception
:基异常类,用于所有其他异常类。std::logic_error
:逻辑错误。std::runtime_error
:运行时错误,例如内存分配失败。std::invalid_argument
:无效参数错误。程序员还可以定义自己的自定义异常类以应对特定错误情况。
抛出异常
要抛出异常,可以使用 throw
throw std::invalid_argument("无效参数");
Jenis pengecualian
Pustaka standard C++ menyediakan pelbagai kelas pengecualian terbina dalam meliputi keadaan ralat biasa. Contohnya:std::exception
: Kelas pengecualian asas, digunakan untuk semua kelas pengecualian lain. std::logic_error
: Ralat logik. std::runtime_error
: Ralat masa jalan, seperti kegagalan peruntukan memori. std::invalid_argument
: Ralat parameter tidak sah. Lempar pengecualian
Untuk membuang pengecualian, anda boleh menggunakan pernyataanlempar
. Ia menerima rujukan atau penunjuk kepada objek pengecualian. #include <iostream> #include <fstream> int main() { std::string filename; std::cout << "Enter the filename: "; std::cin >> filename; try { std::ifstream file(filename); if (!file.is_open()) { throw std::runtime_error("文件打开失败"); } // 读取文件内容并处理 } catch (const std::exception& e) { std::cerr << "错误:" << e.what() << std::endl; } return 0; }
Atas ialah kandungan terperinci Dalam C++, bagaimana pengendalian pengecualian digunakan untuk diagnostik dan penyelesaian masalah?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!