Bootstrap

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_errorstd::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!

2.3 捕获

;