我真没看出异常的好处在哪里。
有人说检测返回值需要些很多 if else,其实这个对异常也一样,当一个函数可能抛出多种异常时,外面如果要捕获,需要很多 catch 分支(如果不用 catch ...),那我觉得还不如对返回值 switch case 呢。
int result = f();
switch result
case:
case:
case:
何况对应 catch ... 用返回值也可以 用 if (result != 0) 得到同样的效果。
简而言之,对于要写很多 if else 来判断返回值的场景,用异常一样要些很多 catch 分支;对于用 catch ... 捕获所有异常的用法,返回值也可以用if (result != 0)这种方式达到效果。
【 在 ziqin 的大作中提到: 】
: 这篇文章的水平可能还不如版上,说了半天都是脱开使用场景光说exception的消耗,至于反馈链长的问题怎么解决也没提解决方案。而且分析代码性能,不分析机器码也就算了,throw exception的if里,连[[unlikely]]也不加,分那么多thread,也不绑核。这种文章转成中文能被喷死,一变英文就变香饽饽了
--
FROM 113.246.192.*