C++ 编写自己的异常处理

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

  我们的异常处理类的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) 定义:

?
1
2
3
4
5
class  DerivedException : public  BaseException
{
public :
     MY_DEFINE_EXCEPTION(DerivedException, BaseException);
};

  2) 如何抛出异常

?
1
MY_THROW(DerivedException)

  3) 如何catch异常

?
1
2
3
4
catch  (DerivedException& e)
{
     cout<< e.what() << endl;
}
?

转载自:点击打开链接

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值