【C++】异常处理 ⑥ ( 异常生命周期

您所在的位置:网站首页 c++异常处理机制,举例说明 【C++】异常处理 ⑥ ( 异常生命周期

【C++】异常处理 ⑥ ( 异常生命周期

2024-07-10 04:19| 来源: 网络整理| 查看: 265

一、C++ 异常处理 - 抛出自定义类对象异常1、抛出 异常对象

如果 抛出的 指针类型 , 指向的是 实际的对象 , 那么就要涉及到 对象的 内存空间的 分配 与 释放 ;

涉及到 内存空间 的 申请 和 释放 , 就需要考 讨论 异常 的生命周期 , 什么时候申请内存 , 什么时候释放内存 ;

2、代码示例 - 抛出 异常对象

下面的代码中 , 声明了 3 个自定义类 Exception1 , Exception2 , Exception3 ;

在不同的时机 , 抛出不同的 自定义类 对象 ;

抛出异常 , 直接使用 throw 关键字抛出 , Exception1 对象在抛出时创建 ;

代码语言:javascript复制throw Exception1();

在 catch 分支中 , 拦截异常 , 此处拦截的是 异常对象 , 不是 指针 或 引用 ;

代码语言:javascript复制catch (Exception1 e)

代码示例 :

代码语言:javascript复制#include "iostream" using namespace std; // 异常类 class Exception1 {}; class Exception2 {}; class Exception3 {}; // 拷贝函数 // 使用 throw 关键字抛出 对象异常 void my_strcpy(char* to, char* from) { if (from == NULL) { // 源字符串出错 throw Exception1(); } if (to == NULL) { // 目标字符串出错 throw Exception2(); } // 拷贝前检查条件 if (*from == 'J') { // 源字符串不能是 J 开头的 throw Exception3(); } // 逐个字节拷贝字符 while (*from != '\0') { *to = *from; to++; from++; } *to = '\0'; } int main() { // 源字符串 char str1[] = "Jerry"; // 目的字符串 char str2[32] = {0}; try { // 调用字符串拷贝函数 my_strcpy(str2, str1); cout


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3