自定义异常类-我们为什么需要它?

新泽西

我正在阅读有关自定义异常的信息。这就是我所做的。

#include <iostream>
#include <exception>
#include <stdexcept>

using namespace std;

class myBase : public exception
{
public:
    myBase() {};
    virtual ~myBase(void) {};
    virtual const char* what() const { return "Hello, you have done a mistake"; }
};

class myDerived : public myBase
{
public:
    myDerived() {};
    virtual ~myDerived(void) {};
    const char* what() const { return "Hello, you have done a mistake in - derived class"; }
};

int main(void)
{
    try
    {
        throw myDerived();
    }
    catch (exception& e)
    {
        cout << e.what() << endl;
    }

    getchar();
    return 0;
}

我知道,我可以抛出我的自定义类对象并捕获它。我不明白这个目的。有人可以向我解释为什么我们需要自定义异常类吗?任何实际的示例都将帮助我理解使用自定义异常类的目的。

谢谢。

101010

可以说还有另一个用户定义class,它也继承自class myBase

class myDerived2 : public myBase {
public:
    myDerived2() {}
    virtual ~myDerived2() {}
};

并说您有一个try catch子句:

try {
  myDerived  A;
  myDerived2 B;
  ...
  /* to staff with both A and B */
  ...
} catch (std::exception& e){
  cout << e.what() << endl; 
}
  • 在上面的try - catch条款限制你的治疗类型的异常你的自我myDerived,并myDerived2以相同的方式。

  • 如果你想享受型的抛出myDerived,并myDerived2以不同的方式?

  • 然后,您必须定义一个不同的try-catch子句:


try {
  myDerived  A;
  myDerived2 B;
  ...
  /* to staff with both A and B */
  ...
} catch (myDerived &d1) {
  /* treat exception of type myDerived */
} catch (myDerived &d2) {
  /* treat exception of type myDerived2 */
}
  • 从上面的示例中,我认为很明显,定义自定义异常为程序员提供了一种有价值的,通用的工具,可以以更加通用和专业的方式处理异常。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么我们需要Java中的Properties类?

来自分类Dev

为什么不能创建自定义异常类?

来自分类Dev

为什么我们需要使用 'get_absolute_url()' 而不是自定义定义的类似方法?

来自分类Dev

为什么我们需要自定义数据集类并在NLP,BERT微调等中使用_getitem_方法

来自分类Dev

为什么我们使用junit 4 + Mockito抛出异常并断言它引发了异常

来自分类Dev

为什么不同于类的其他成员,我们为什么需要定义类的静态变量?

来自分类Dev

为什么我们需要抽象类而不是虚拟类?

来自分类Dev

如果包装器类已经不可变,为什么我们需要Atomic *类?

来自分类Dev

我们什么时候需要创建自己的自定义依赖项属性?

来自分类Dev

我们需要注册自定义标签吗?

来自分类Dev

为什么我们需要将Apply和Applicative类型类分开?

来自分类Dev

为什么我们需要在famo.us中使用TransitionableTransform类?

来自分类Dev

为什么我们在python中的每个方法上都需要相应的类函数?

来自分类Dev

Android:扩展应用程序类。为什么我们需要实现单例模式?

来自分类Dev

为什么我们需要特定的类来处理请求和响应?

来自分类Dev

为什么我们需要在JavaScript中定义构造函数

来自分类Dev

为什么我们仍然需要定义自己的函数比较器

来自分类Dev

为什么我们需要用圆括号来定义析构函数?

来自分类Dev

为什么我们需要在MongoDB中定义数据模型

来自分类Dev

为什么我们需要双重定义从 main 传递到方法的变量?

来自分类Dev

为什么我们不需要为POST定义res.on('data'...,即使我们不对数据做任何事情?

来自分类Dev

我们什么时候需要数据类?

来自分类Dev

自定义异常不断给我“异常:未知异常”

来自分类Dev

为什么我需要将“/”添加到 routerLink 但我们在路由器定义中没有“/”?

来自分类Dev

什么是BIOS,为什么我们需要它?

来自分类Dev

PyQt4:为什么我们需要在对super()的调用中传递类名

来自分类Dev

为什么我们需要在ASP.NET MVC中调用父类的空虚方法

来自分类Dev

Java:为什么我们可以从非子类访问字段和方法时需要扩展类

来自分类Dev

为什么我们需要使用一个`var`来定义许多变量?

Related 相关文章

  1. 1

    为什么我们需要Java中的Properties类?

  2. 2

    为什么不能创建自定义异常类?

  3. 3

    为什么我们需要使用 'get_absolute_url()' 而不是自定义定义的类似方法?

  4. 4

    为什么我们需要自定义数据集类并在NLP,BERT微调等中使用_getitem_方法

  5. 5

    为什么我们使用junit 4 + Mockito抛出异常并断言它引发了异常

  6. 6

    为什么不同于类的其他成员,我们为什么需要定义类的静态变量?

  7. 7

    为什么我们需要抽象类而不是虚拟类?

  8. 8

    如果包装器类已经不可变,为什么我们需要Atomic *类?

  9. 9

    我们什么时候需要创建自己的自定义依赖项属性?

  10. 10

    我们需要注册自定义标签吗?

  11. 11

    为什么我们需要将Apply和Applicative类型类分开?

  12. 12

    为什么我们需要在famo.us中使用TransitionableTransform类?

  13. 13

    为什么我们在python中的每个方法上都需要相应的类函数?

  14. 14

    Android:扩展应用程序类。为什么我们需要实现单例模式?

  15. 15

    为什么我们需要特定的类来处理请求和响应?

  16. 16

    为什么我们需要在JavaScript中定义构造函数

  17. 17

    为什么我们仍然需要定义自己的函数比较器

  18. 18

    为什么我们需要用圆括号来定义析构函数?

  19. 19

    为什么我们需要在MongoDB中定义数据模型

  20. 20

    为什么我们需要双重定义从 main 传递到方法的变量?

  21. 21

    为什么我们不需要为POST定义res.on('data'...,即使我们不对数据做任何事情?

  22. 22

    我们什么时候需要数据类?

  23. 23

    自定义异常不断给我“异常:未知异常”

  24. 24

    为什么我需要将“/”添加到 routerLink 但我们在路由器定义中没有“/”?

  25. 25

    什么是BIOS,为什么我们需要它?

  26. 26

    PyQt4:为什么我们需要在对super()的调用中传递类名

  27. 27

    为什么我们需要在ASP.NET MVC中调用父类的空虚方法

  28. 28

    Java:为什么我们可以从非子类访问字段和方法时需要扩展类

  29. 29

    为什么我们需要使用一个`var`来定义许多变量?

热门标签

归档