商城首页欢迎来到中国正版软件门户

您的位置:首页 >C++异常处理:try catch使用详解

C++异常处理:try catch使用详解

  发布于2025-09-03 阅读(0)

扫一扫,手机访问

答案:try-catch用于捕获异常,提升程序健壮性;将可能出错代码放入try块,用catch捕获并处理,推荐使用标准或自定义异常类,注意catch顺序与异常安全。

C++如何使用try catch捕获异常

在C++中,try-catch 语句用于捕获和处理程序运行过程中可能发生的异常,避免程序因错误而直接崩溃。使用 try-catch 的核心思想是:将可能出错的代码放在 try 块中,然后用 catch 块来捕获并处理抛出的异常。

基本语法结构

try-catch 的基本写法如下:

try {
    // 可能抛出异常的代码
    throw exception_type("错误信息");
}
catch (exception_type& e) {
    // 处理特定类型的异常
    std::cout << "捕获异常:" << e.what() << std::endl;
}
catch (...) {
    // 捕获所有其他未处理的异常(可选)
    std::cout << "未知异常" << std::endl;
}

常见异常类型

C++ 标准库定义了一些常用的异常类,它们都继承自 std::exception,使用时需包含 #include <stdexcept>

  • std::runtime_error:运行时错误
  • std::logic_error:逻辑错误
  • std::invalid_argument:无效参数
  • std::out_of_range:越界访问

示例:

#include <iostream>
#include <stdexcept>

int main() { try { throw std::invalid_argument("参数无效"); } catch (const std::invalid_argument& e) { std::cout << "捕获到参数错误:" << e.what() << std::endl; } catch (const std::exception& e) { std::cout << "标准异常:" << e.what() << std::endl; } return 0; }

如何抛出异常

使用 throw 关键字可以手动抛出异常。可以抛出基本类型(如 int、string),但推荐使用标准异常类或自定义异常类。

自定义异常示例:

class MyException : public std::exception {
public:
    const char* what() const noexcept override {
        return "这是一个自定义异常";
    }
};

try { throw MyException(); } catch (const MyException& e) { std::cout << e.what() << std::endl; }

多个 catch 块的匹配顺序

catch 块按顺序匹配,应将派生类异常放在前面,基类放在后面,否则会被基类捕获而无法进入派生类处理块。

正确写法:

try {
    throw std::out_of_range("越界");
}
catch (const std::out_of_range& e) {
    std::cout << "越界异常:" << e.what() << std::endl;
}
catch (const std::exception& e) {
    std::cout << "其他标准异常" << std::endl;
}

基本上就这些。try-catch 能有效提升程序的健壮性,关键是合理抛出、精准捕获,并注意异常安全。不复杂但容易忽略细节。

本文转载于:互联网 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注