原则14:审慎使用异常规格

异常规格就是你指定一个函数会抛出什么样的异常。如果函数内实际抛出的异常并不是异常规格所指定的异常类型,C++会视其为unexpected异常,并且会调用terminate,进而调用abort来暴力终止程序,这会导致很多局部变量不被释放。
所以你要么不用,要么用的非常好,分毫不差。
经常地,主调函数有异常规格,被调函数没有异常规格,结果被调函数抛出了一个与主调函数异常规格不一致的异常,这就会导致C++暴力终止程序,这是不一致性导致的。
下面介绍避免使用unexpected的方法:
解决方法1:减小不一致性。不要在模版类中使用异常规格,因为模版类本身就是由类型参数来定的,它在模版阶段是未确定的;
解决方法2:主调函数在调用可能抛出位置异常的函数时不使用异常规格;
解决方法3:使用自定义unexpected替换系统默认的unexpected行为;
解决方法4:在你不确定抛出异常类型时,你自定义一个类来处理这种未知行为。

多谢捧场

如果您觉得我的文章有价值,那么赏脸打赏一个,鄙人感激不尽。不过,不打赏看看也是好的,如果有不对的地方,还请您多多指正。


原则14:审慎使用异常规格_第1张图片

你可能感兴趣的:(原则14:审慎使用异常规格)