一直以来我对错误处理非常感兴趣,因为我时常试想一个程序流程到达异常的时候,能不能给用户(包括开发者)更好的体验,实战经验欠缺是空想了。
今天鬼使神差翻了下 java编程思想作者的演讲 Refs PS:不得不说一点,Github工作流真的很棒,越来越多的聪明人把自己的创作搬到上面(老师布置作业也不例外)。
【废话不说,开始总结正题】
哪些是应该抛弃 不可恢复的错误(或 Bugs)
1.不正确的转换类型
2.企图 dereference 掉 null 指针
3.企图访问数组的边界以外的元素
4.除以 0
5.不可意料 数学算术精度溢出
6.内存溢出
7.爆栈
8.我们主动 显式抛弃掉
9.通信(传参等等)失败
10.断言失败
………………………………………………………………………………………………………………………………………………
那么哪一些又是 可恢复的错误
1.我们所要完成的事 出乎意料,也就是逻辑上错误,理论上正确,可以通过修正 debug 来解决的。
2.文件 IO
3.网络 IO
4.解析数据
5.验证用户真实数据
摔一巴掌:事实上,OS~APP 明显可以恢复的异常不超过11%.
……………………………………………………………………………………………………………………………………6
还没结束总结 ,预告,golang 是从鲁棒性、可恢复性实践性语言,这意味着我们要去自己处理每种异常达到可恢复目的,
经验告诉我们在 Java 里 Exception其实并不明确,很多都是 Spring 帮我们弄的,事实上要搞出来自己的应用 使用内建(自带)异常无法涵盖所有错误。
这么说来,其实 golang 缺点就是【生态】【没泛型】【其他坑】,还是值得学习的,不过适用领域还比较少,还在革命进程当中。