一层调用等效,
多层调用,异常就省心了,不用管到底是哪一层出问题了
底层负责抛异常, 顶层负责报错, 中间层全部只考虑理想情况
最简单的例子 a->b->c->d ... 中间每一节点都要判断null的话很麻烦,
语法糖支持的的话用 a?.b?.c?.d 之类写法, 也要注意不能写少了
捕获异常就简单了
【 在 speedboy2998 的大作中提到: 】
我真没看出异常的好处在哪里。
有人说检测返回值需要些很多 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,也不绑核。这种文章转成中文能被喷死,一变英文就变香饽饽了
--
修改:ABCDEFGHJKLM FROM 103.216.43.*
FROM 103.216.43.*