在 Ubuntu 中,C++ 程序的异常处理主要依赖于 C++ 的异常处理机制。以下是一些基本的步骤和示例,帮助你在 Ubuntu 上编写和运行带有异常处理的 C++ 程序。
首先,创建一个简单的 C++ 程序,该程序将演示异常处理的基本用法。
#include <iostream>
#include <stdexcept>
int main() {
try {
// 可能会抛出异常的代码
throw std::runtime_error("An error occurred!");
} catch (const std::runtime_error& e) {
// 捕获并处理异常
std::cerr << "Caught exception: " << e.what() << std::endl;
} catch (...) {
// 捕获所有其他类型的异常
std::cerr << "Caught an unknown exception" << std::endl;
}
return 0;
}
使用 g++
编译器编译你的 C++ 程序。确保启用 C++11 或更高版本的支持,因为异常处理是 C++ 标准的一部分。
g++ -std=c++11 -o my_program my_program.cpp
编译成功后,运行生成的可执行文件。
./my_program
你应该会看到以下输出:
Caught exception: An error occurred!
std::runtime_error
、std::invalid_argument
等。你也可以创建自定义异常类来满足特定需求。以下是一个简单的自定义异常类的示例:
#include <iostream>
#include <stdexcept>
class MyException : public std::runtime_error {
public:
explicit MyException(const std::string& message)
: std::runtime_error(message) {}
};
int main() {
try {
// 抛出自定义异常
throw MyException("A custom error occurred!");
} catch (const MyException& e) {
// 捕获并处理自定义异常
std::cerr << "Caught custom exception: " << e.what() << std::endl;
} catch (const std::runtime_error& e) {
// 捕获并处理标准异常
std::cerr << "Caught standard exception: " << e.what() << std::endl;
} catch (...) {
// 捕获所有其他类型的异常
std::cerr << "Caught an unknown exception" << std::endl;
}
return 0;
}
使用相同的编译命令编译自定义异常程序:
g++ -std=c++11 -o my_custom_exception_program my_custom_exception_program.cpp
运行生成的可执行文件:
./my_custom_exception_program
你应该会看到以下输出:
Caught custom exception: A custom error occurred!
通过这些步骤,你可以在 Ubuntu 上编写、编译和运行带有异常处理的 C++ 程序。异常处理是确保程序健壮性和可维护性的重要工具。