C++ `std::runtime_error` 使用详解
在 C++ 中,异常处理是管理程序错误和异常情况的重要机制。
std::runtime_error
是 C++ 标准库中用于表示运行时错误的异常类之一。它通常用于处理那些在程序运行时可能发生的、无法在编译时检测到的错误(如文件不存在、无效输入等)。本文将详细介绍
std::runtime_error
的使用方法,并结合实际代码示例进行讲解。
1. 异常处理的基本概念
1.1 什么是异常?
异常是程序在执行过程中发生的异常情况,通常是由于错误或意外条件导致的。C++ 提供了异常处理机制,允许程序在发生错误时优雅地处理问题,而不是直接崩溃。
1.2 异常处理的组成部分
- 抛出异常 (
throw
):当检测到错误时,使用throw
关键字抛出一个异常。 - 捕获异常 (
try-catch
):使用try
块包裹可能抛出异常的代码,并使用catch
块捕获和处理异常。 - 异常类型:C++ 标准库提供了多种异常类型,如
std::runtime_error
、std::logic_error
等。
2. std::runtime_error
的基本用法
2.1 std::runtime_error
的定义
std::runtime_error
是定义在 <stdexcept>
头文件中的一个异常类,用于表示运行时错误。它是 std::exception
的子类,因此可以使用 std::exception
的接口(如 what()
)来获取错误信息。
- 类定义
class runtime_error : public exception {
public:
explicit runtime_error(const string& what_arg);
explicit runtime_error(const char* what_arg);
};
2.2 抛出 std::runtime_error
可以使用 throw
关键字抛出一个 std::runtime_error
异常,并传递错误信息。
示例:抛出 std::runtime_error
#include <iostream>
#include <stdexcept>
void check_positive(int value) {
if (value <= 0) {
throw std::runtime_error("Value must be positive!");
}
}
int main() {
try {
check_positive(-10); // 这里会抛出异常
} catch (const std::runtime_error& e) {
std::cerr << "Error: " << e.what() << std::endl;
}
return 0;
}
- 输出结果
Error: Value must be positive!