我们的异常处理类的features

如何写一个异常处理类是一个不太容易的事情,最近刚好接触了一些不错的代码,看到了一些技巧,这里和大家分享一下。

一个相对完善的异常处理类(以及附加的一些东西)应该能够处理下面的一些功能:

1) 能够方便的定义异常类的继承树

2) 能够方便的throw、catch,也就是在代码中捕获、处理代码的部分应该更短

3) 能够获取异常出现的源文件的名字、方法的名字、行号

4) 能够获取异常出现的调用栈并且打印出来

由于目前我用的平台是linux,所以里面调用的一些函数也只是在linux下面有用。Windows也肯定是具有相应的函数的,具体可能需要去查查

首先科普一些内容:

1) 对于没有捕获的异常(no handler),则会终止程序,调用terminate()

2) 在定义函数的时候,我们可以在定义的后面加上throw (exception1, exception2…):

    a) 如果没有写这一段、则可能抛出任意的异常

    b) 如果写throw(),则表示函数不能抛出任意的异常

    c) 如果写throw(A, B), 表示函数抛出A、B的异常

如果抛出的异常不在列表范围内,则异常不能被catch,也就会调用terminate()

我们构想一下我们定义、调用我们的异常类的时候是怎样的一个情形:

1) 定义:

public BaseException
   2: {
public:
   4:     MY_DEFINE_EXCEPTION(DerivedException, BaseException);
   5: };

相关文章:

  • 2022-12-23
  • 2021-05-19
  • 2021-08-26
  • 2021-05-04
  • 2021-10-05
  • 2021-04-24
  • 2021-07-13
  • 2022-01-13
猜你喜欢
  • 2022-12-23
  • 2021-08-11
  • 2021-11-21
  • 2022-12-23
  • 2021-11-21
  • 2021-11-05
  • 2021-10-21
相关资源
相似解决方案