您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
在 Linux 下,C++ 的异常处理主要依赖于 C++ 标准库中的 <exception>
头文件提供的功能
throw
关键字抛出一个异常对象。首先需要创建一个异常类,该类应继承自 std::exception
或其子类(如 std::runtime_error
)。#include <iostream>
#include <exception>
class MyException : public std::runtime_error {
public:
MyException(const std::string& message) : std::runtime_error(message) {}
};
int main() {
try {
throw MyException("An error occurred");
} catch (const MyException& e) {
std::cerr << "Caught exception: " << e.what() << std::endl;
}
return 0;
}
try
和 catch
块来捕获和处理异常。将可能抛出异常的代码放在 try
块中,然后在 catch
块中处理异常。#include <iostream>
#include <exception>
class MyException : public std::runtime_error {
public:
MyException(const std::string& message) : std::runtime_error(message) {}
};
int main() {
try {
throw MyException("An error occurred");
} catch (const MyException& e) {
std::cerr << "Caught exception: " << e.what() << std::endl;
} catch (const std::exception& e) {
std::cerr << "Caught standard exception: " << e.what() << std::endl;
} catch (...) {
std::cerr << "Caught an unknown exception" << std::endl;
}
return 0;
}
在这个例子中,我们捕获了 MyException
类型和所有标准异常类型的异常。如果抛出的异常类型与任何 catch
块中的类型不匹配,将执行最后一个 catch
块(捕获所有异常)。
noexcept
关键字:noexcept
是一个运算符,用于指定函数不会抛出任何异常。这在某些情况下可以提高性能,因为编译器可以生成更优化的代码。#include <iostream>
void my_function() noexcept {
// Your code here
}
int main() {
try {
my_function();
} catch (...) {
std::cerr << "Caught an unknown exception" << std::endl;
}
return 0;
}
注意:在 Linux 下,C++ 异常处理与 Windows 下的异常处理有所不同。在 Windows 下,可以使用 __try
和 __except
关键字进行异常处理,但在 Linux 下,应使用 try
和 catch
关键字。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。