ToB企服应用市场:ToB评测及商务社交产业平台

标题: c++的非常处理机制(try、catch、throw) [打印本页]

作者: 锦通    时间: 2024-8-13 12:20
标题: c++的非常处理机制(try、catch、throw)
在C++中,非常处理机制通过try、catch和throw来管理程序运行时的错误环境。非常处理机制使得程序可以大概在出现错误时优雅地恢复或处理错误,而不是让程序崩溃。以下是关于C++非常处理的详细解说
1. throw 关键字

throw用于抛出非常。非常是一个表示错误或非常环境的对象。今世码中出现问题时,可以使用throw来创建一个非常对象并将其抛出。
示例:
  1. #include <iostream>
  2. #include <stdexcept> // std::runtime_error
  3. void mightGoWrong() {
  4.     bool errorOccurred = true; // 假设发生了错误
  5.     if (errorOccurred) {
  6.         throw std::runtime_error("Something went wrong");
  7.     }
  8. }
  9. int main() {
  10.     try {
  11.         mightGoWrong();
  12.     } catch (const std::exception& e) {
  13.         std::cout << "Caught an exception: " << e.what() << std::endl;
  14.     }
  15.     return 0;
  16. }
复制代码
2. try 关键字

try块用于包含可能会抛出非常的代码。如果try块中的代码抛出了非常,那么控制流将转移到相应的catch块来处理该非常。
示例:
  1. #include <iostream>
  2. void mightGoWrong() {
  3.     throw std::runtime_error("An error occurred");
  4. }
  5. int main() {
  6.     try {
  7.         mightGoWrong(); // 可能抛出异常
  8.     } catch (const std::exception& e) {
  9.         std::cout << "Caught exception: " << e.what() << std::endl;
  10.     }
  11.     return 0;
  12. }
复制代码
3. catch 关键字

catch用于捕获try块中抛出的非常。catch块指定了要捕获的非常范例,并处理该非常。可以定义多个catch块来捕获差别范例的非常。
示例:
  1. #include <iostream>
  2. #include <stdexcept>
  3. void mightGoWrong() {
  4.     throw std::runtime_error("Runtime error occurred");
  5. }
  6. int main() {
  7.     try {
  8.         mightGoWrong();
  9.     } catch (const std::runtime_error& e) {
  10.         std::cout << "Caught runtime_error: " << e.what() << std::endl;
  11.     } catch (const std::exception& e) {
  12.         std::cout << "Caught exception: " << e.what() << std::endl;
  13.     }
  14.     return 0;
  15. }
复制代码
非常处理机制的工作流程

自定义非常

可以创建自定义非常类,继承自标准非常类(如std::exception)或其他非常类。
示例:
  1. #include <iostream>
  2. #include <exception>
  3. class MyException : public std::exception {
  4. public:
  5.     const char* what() const noexcept override {
  6.         return "MyException occurred";
  7.     }
  8. };
  9. void mightGoWrong() {
  10.     throw MyException();
  11. }
  12. int main() {
  13.     try {
  14.         mightGoWrong();
  15.     } catch (const MyException& e) {
  16.         std::cout << "Caught MyException: " << e.what() << std::endl;
  17.     } catch (const std::exception& e) {
  18.         std::cout << "Caught exception: " << e.what() << std::endl;
  19.     }
  20.     return 0;
  21. }
复制代码

非常安全


在C++中,非常处理机制使得程序可以更优雅地处理运行时错误,通过适当的try、catch和throw使用,可以进步程序的结实性和容错能力。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4