不可恢复的错误

时间:2022-02-09 21:05:22

一直以来我对错误处理非常感兴趣,因为我时常试想一个程序流程到达异常的时候,能不能给用户(包括开发者)更好的体验,实战经验欠缺是空想了。

今天鬼使神差翻了下 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 缺点就是【生态】【没泛型】【其他坑】,还是值得学习的,不过适用领域还比较少,还在革命进程当中。