【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 异常信息
目录
相关文章
|
4天前
|
存储 编译器 C语言
c++的学习之路:5、类和对象(1)
c++的学习之路:5、类和对象(1)
19 0
|
29天前
|
存储 编译器 C语言
C++入门: 类和对象笔记总结(上)
C++入门: 类和对象笔记总结(上)
34 0
|
4天前
|
C++
c++的学习之路:7、类和对象(3)
c++的学习之路:7、类和对象(3)
19 0
|
3天前
|
编译器 C++
【C++基础(八)】类和对象(下)--初始化列表,友元,匿名对象
【C++基础(八)】类和对象(下)--初始化列表,友元,匿名对象
|
存储 编译器 Linux
标准库中的string类(中)+仅仅反转字母+字符串中的第一个唯一字符+字符串相加——“C++”“Leetcode每日一题”
标准库中的string类(中)+仅仅反转字母+字符串中的第一个唯一字符+字符串相加——“C++”“Leetcode每日一题”
|
9天前
|
编译器 C++
自从学了C++之后,小雅兰就有对象了!!!(类与对象)(中)——“C++”
自从学了C++之后,小雅兰就有对象了!!!(类与对象)(中)——“C++”
|
9天前
|
存储 编译器 C++
自从学了C++之后,小雅兰就有对象了!!!(类与对象)(上)——“C++”
自从学了C++之后,小雅兰就有对象了!!!(类与对象)(上)——“C++”
|
9天前
|
缓存 编译器 API
NumPy与其他语言(如C/C++)的接口实践
【4月更文挑战第17天】本文介绍了NumPy与C/C++的接口实践,包括Python与C/C++交互基础、NumPy的C API和Cython的使用。通过案例展示了如何将C++函数与NumPy数组结合,强调了内存管理、类型匹配、错误处理和性能优化的最佳实践。掌握这些技能对于跨语言交互和集成至关重要。
|
10天前
|
安全 C++
石头剪子布(字符串解法 C++)
石头剪子布(字符串解法 C++)
17 0
|
10天前
|
C++
【C++成长记】C++入门 | 类和对象(下) |Static成员、 友元
【C++成长记】C++入门 | 类和对象(下) |Static成员、 友元