异常
基本异常处理关键字
在 C++ 中,异常处理是一种机制,用于处理程序在运行时发生的异常情况。异常是指程序执行期间发生的意外事件,比如除以零、访问无效的内存地址等。通过使用异常处理机制,可以使程序更健壮,并能够处理这些意外情况,避免程序崩溃或产生不可预测的结果。
在 C++ 中,异常处理通常包括以下关键词和概念:
- try-catch 块:try 块用于标识可能会引发异常的代码块,而 catch 块用于捕获和处理异常。catch 块可以针对不同类型的异常进行处理。
- throw 关键词:throw 用于在程序中显式抛出异常。当发生异常情况时,可以使用 throw 来抛出一个特定的异常类型。
- 异常类型:异常可以是任何类型的数据,但通常是标准库中的异常类或自定义的异常类。标准库提供了一些常见的异常类,如 std::exception 及其派生类,用于表示不同类型的异常情况。
核心语法:
| 关键字 | 作用 | 关键注意点 |
|---|---|---|
throw | 中断当前代码流程,抛出异常对象,跳转到最近的匹配 catch 块 | 抛出后,throw 之后的代码立即停止执行 |
try | 标记'需要监控异常的代码块',必须和至少一个 catch 配对 | 仅监控 try 块内的代码,块外的异常不会被捕获 |
catch | 按'类型从上到下'匹配异常,处理捕获到的异常 | 1. 建议用 const 引用(避免拷贝 + 防止切片);2. catch(...) 捕获所有异常 |
标准异常体系
C++ 内置了一套标准异常类(都继承自 std::exception),无需自定义就能满足大部分场景:
| 异常类 | 用途 | 头文件 |
|---|---|---|
invalid_argument | 无效参数(如除数为 0) | <stdexcept> |
out_of_range | 越界访问(如 vector::at()) | <stdexcept> |
runtime_error | 通用运行时错误 | <stdexcept> |
bad_alloc | 内存分配失败(new 失败) | <new> |
#include <iostream>
#include <stdexcept>
using namespace std;
{
(y == ) ();
x / y;
}
{
x, y;
cin >> x >> y;
{
result = (x, y);
cout << << result << endl;
} ( runtime_error& e) {
cout << << e.() << endl;
}
;
}


