@
saber000 @
jarlyyn @
SourceMan @
iyangyuan @
will0404 @
msg7086 @
czheo @
funCoder @
chemzqm 发表一下自己的看法. mingge 其实是正确的. 这个问题在 C++里就有过争论, 也是 C++异常处理的经典案例.
在这个特定的场景之下, 其实 mingge 非常聪明, 因为 obj.wo.ok.arr.push("帅哥"); 这一条语句是一个 push 操作, 如果这一条语句出错, 被 catch 到, 那几乎只有一种可能:
* 某一个对象指向 NULL
如果是这样的话, 程序会抛出一个空指针异常, 在优化良好的情形下, 空指针异常的处理速度极快 / 如果异常处理程序被重定向, 那么记录错误日志也效果也极好. 我举一个例子, 下面有一个链表:
* a1->a2->a3->a4 ... ->aN
如果传入的对象是 a1, 但需要调用的对象是 aN, 如何判断 aN 是一个合法对象? 有两种方法.
1) if(a1 && a1->a2 && a1->a2->a3 ... && ... ) 需要进行 N 次判断
2) try { a1->...->aN } catch()
很明显 2)的做法效率极高......
这个情形是很特定的, 因为抛出的异常刚好是一个 NULL 指针异常.