【C++ 语言】异常 ( 抛出字符串异常 | 抛出异常对象 | 抛出任意对象 | 抛出自定义异常 )(一)

简介: 【C++ 语言】异常 ( 抛出字符串异常 | 抛出异常对象 | 抛出任意对象 | 抛出自定义异常 )(一)

3. 异常捕获处理 :


捕获异常类型 : MyException& my
  // 4. 抛出自定义异常
  //  捕获该对象 , 并执行其中的方法
  try
  {
  throwMyException();
  }
  catch (MyException& my)
  {
  cout << " 捕获了 自定义 MyException 异常对象 : " << my.what() << endl;
  }


4. 代码执行结果 :


捕获了 自定义 MyException 异常对象 : 自定义异常 MyException what 异常信息




VI 异常相关代码


定义 抛出异常的方法 和 自定义异常类 :


//抛出字符串异常的方法
void throwString() {
  throw "throwStringException 抛出异常字符串";
}
//抛出任意类型对象异常的方法
void throwException() {
  throw exception("throwException 抛出异常对象");
}
//抛出任意类型对象异常的方法
void throwChildObject() {
  throw Child();
}
//自定义异常
class MyException : public exception {
public :
  virtual char const* what() const {
  return "自定义异常 MyException what 异常信息";
  }
};
//抛出自定义异常
void throwMyException() {
  throw MyException();
}


捕获处理异常代码 :


// X . 异常
  // 1. 捕获字符串异常
  try
  {
  throwString();
  }
  catch (const char* c)
  {
  cout << " 捕获了字符串异常 " << c << endl;
  }
  // 2. 捕获异常对象
  //  其中调用 exception 的 what() 方法即可获得异常信息
  //  可以获取异常信息 , 即构造函数中传入的字符串
  try
  {
  throwException();
  }
  catch (exception &e)
  {
  cout << " 捕获了异常对象 " << e.what() << endl;
  }
  // 3. 抛出任意对象
  //  捕获该对象 , 并执行其中的方法
  try
  {
  throwChildObject();
  }
  catch (Child& child)
  {
  cout << " 捕获了 Child 异常对象 , 调用其方法 : " << endl;
  child.function();
  }
  // 4. 抛出自定义异常
  //  捕获该对象 , 并执行其中的方法
  try
  {
  throwMyException();
  }
  catch (MyException& my)
  {
  cout << " 捕获了 自定义 MyException 异常对象 : " << my.what() << endl;
  }



执行结果 :


捕获了字符串异常 throwStringException 抛出异常字符串
 捕获了异常对象 throwException 抛出异常对象
 捕获了 Child 异常对象 , 调用其方法 :
 子类方法
 捕获了 自定义 MyException 异常对象 : 自定义异常 MyException what 异常信息
目录
相关文章
|
11天前
|
存储 负载均衡 算法
基于 C++ 语言的迪杰斯特拉算法在局域网计算机管理中的应用剖析
在局域网计算机管理中,迪杰斯特拉算法用于优化网络路径、分配资源和定位故障节点,确保高效稳定的网络环境。该算法通过计算最短路径,提升数据传输速率与稳定性,实现负载均衡并快速排除故障。C++代码示例展示了其在网络模拟中的应用,为企业信息化建设提供有力支持。
39 15
|
1月前
|
编译器 C++ 开发者
【C++篇】深度解析类与对象(下)
在上一篇博客中,我们学习了C++的基础类与对象概念,包括类的定义、对象的使用和构造函数的作用。在这一篇,我们将深入探讨C++类的一些重要特性,如构造函数的高级用法、类型转换、static成员、友元、内部类、匿名对象,以及对象拷贝优化等。这些内容可以帮助你更好地理解和应用面向对象编程的核心理念,提升代码的健壮性、灵活性和可维护性。
|
1月前
|
安全 编译器 C语言
【C++篇】深度解析类与对象(中)
在上一篇博客中,我们学习了C++类与对象的基础内容。这一次,我们将深入探讨C++类的关键特性,包括构造函数、析构函数、拷贝构造函数、赋值运算符重载、以及取地址运算符的重载。这些内容是理解面向对象编程的关键,也帮助我们更好地掌握C++内存管理的细节和编码的高级技巧。
|
1月前
|
存储 程序员 C语言
【C++篇】深度解析类与对象(上)
在C++中,类和对象是面向对象编程的基础组成部分。通过类,程序员可以对现实世界的实体进行模拟和抽象。类的基本概念包括成员变量、成员函数、访问控制等。本篇博客将介绍C++类与对象的基础知识,为后续学习打下良好的基础。
|
1月前
|
编译器 C语言 C++
类和对象的简述(c++篇)
类和对象的简述(c++篇)
|
1月前
|
消息中间件 Linux C++
c++ linux通过实现独立进程之间的通信和传递字符串 demo
的进程间通信机制,适用于父子进程之间的数据传输。希望本文能帮助您更好地理解和应用Linux管道,提升开发效率。 在实际开发中,除了管道,还可以根据具体需求选择消息队列、共享内存、套接字等其他进程间通信方
69 16
|
2月前
|
C++ 芯片
【C++面向对象——类与对象】Computer类(头歌实践教学平台习题)【合集】
声明一个简单的Computer类,含有数据成员芯片(cpu)、内存(ram)、光驱(cdrom)等等,以及两个公有成员函数run、stop。只能在类的内部访问。这是一种数据隐藏的机制,用于保护类的数据不被外部随意修改。根据提示,在右侧编辑器补充代码,平台会对你编写的代码进行测试。成员可以在派生类(继承该类的子类)中访问。成员,在类的外部不能直接访问。可以在类的外部直接访问。为了完成本关任务,你需要掌握。
85 19
|
2月前
|
存储 编译器 数据安全/隐私保护
【C++面向对象——类与对象】CPU类(头歌实践教学平台习题)【合集】
声明一个CPU类,包含等级(rank)、频率(frequency)、电压(voltage)等属性,以及两个公有成员函数run、stop。根据提示,在右侧编辑器补充代码,平台会对你编写的代码进行测试。​ 相关知识 类的声明和使用。 类的声明和对象的声明。 构造函数和析构函数的执行。 一、类的声明和使用 1.类的声明基础 在C++中,类是创建对象的蓝图。类的声明定义了类的成员,包括数据成员(变量)和成员函数(方法)。一个简单的类声明示例如下: classMyClass{ public: int
83 13
|
4月前
|
安全 程序员 编译器
【C++】异常
C++异常处理机制允许在程序运行时出现错误时,通过`try`、`catch`和`throw`关键字将错误信息传递回调用栈,进行异常处理。它支持异常的重新抛出、自定义异常体系以及标准库提供的异常类层次结构,如`std::exception`及其派生类。异常处理提高了代码的健壮性和可维护性,但也带来了性能开销和代码复杂性等问题。合理使用异常机制,可以有效提升程序的稳定性和安全性。
80 3
|
4月前
|
存储 编译器 C++
【c++】类和对象(下)(取地址运算符重载、深究构造函数、类型转换、static修饰成员、友元、内部类、匿名对象)
本文介绍了C++中类和对象的高级特性,包括取地址运算符重载、构造函数的初始化列表、类型转换、static修饰成员、友元、内部类及匿名对象等内容。文章详细解释了每个概念的使用方法和注意事项,帮助读者深入了解C++面向对象编程的核心机制。
170 5

热门文章

最新文章