Pengenkapsulan pengecualian C++ meningkatkan kebolehbacaan dan kebolehselenggaraan kod dan boleh memisahkan maklumat ralat daripada logik pemprosesan. Maklumat ralat boleh dirangkumkan dengan mentakrifkan kelas pengecualian yang mewarisi daripada std::exception. Gunakan lontaran untuk melontar pengecualian dan cuba tangkap untuk menangkap pengecualian. Dalam kes sebenar, fungsi yang membaca fail menggunakan kelas pengecualian untuk merangkum ralat kegagalan untuk membuka fail Apabila memanggil fungsi ini, pengecualian boleh ditangkap dan mesej ralat boleh dicetak.
Pengenkapsulan pengecualian dalam pengendalian pengecualian fungsi C++
Dalam fungsi C++, enkapsulasi pengecualian boleh meningkatkan kebolehbacaan dan kebolehselenggaraan kod. Dengan merangkum pengecualian, anda boleh memisahkan maklumat ralat daripada memproses logik, mencipta kod yang lebih jelas dan lebih mudah difahami.
Takrif kelas pengecualian
Pertama, kita perlu mentakrifkan kelas pengecualian untuk merangkum maklumat ralat. Kelas ini harus mewarisi daripada kelas pengecualian perpustakaan standard std::exception
. Contohnya: std::exception
。例如:
class MyException : public std::exception { public: MyException(const std::string& message) : std::exception(message) {} };
这个异常类定义了一个构造函数,它接受一个字符串参数并将其作为异常消息。
函数中的异常抛出
在函数中抛出一个异常很简单。可以使用 throw
关键字后跟异常对象:
void myFunction() { if (someCondition) { throw MyException("发生了一些错误!"); } }
函数中的异常捕捉
要捕捉异常,可以使用 try
和 catch
块:
int main() { try { myFunction(); } catch (MyException& e) { std::cout << "错误:" << e.what() << std::endl; } }
实战案例
考虑一个读取文件并计算文件总行数的函数:
int countLines(const std::string& filepath) { std::ifstream ifs(filepath); if (!ifs.is_open()) { throw MyException("无法打开文件!"); } int count = 0; std::string line; while (std::getline(ifs, line)) { ++count; } return count; }
在这个函数中,我们使用 MyException
int main() { try { int lineCount = countLines("inputFile.txt"); std::cout << "文件共 " << lineCount << " 行" << std::endl; } catch (MyException& e) { std::cout << "错误:" << e.what() << std::endl; } }
throw
diikuti dengan objek pengecualian: 🎜rrreee🎜🎜Exception catching dalam fungsi 🎜🎜🎜Untuk menangkap pengecualian, anda boleh menggunakan try
dan catch
Block: 🎜rrreee🎜🎜Kes praktikal🎜🎜🎜Pertimbangkan fungsi yang membaca fail dan mengira jumlah baris dalam fail: 🎜rrreee🎜Dalam fungsi ini, kami menggunakan MyException
kelas untuk merangkum mesej ralat kegagalan pembukaan fail. Apabila memanggil fungsi ini, kita boleh menangkap pengecualian dan mencetak mesej ralat: 🎜rrreeeAtas ialah kandungan terperinci Bagaimana untuk merangkum pengecualian dalam pengendalian pengecualian fungsi C++?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!