1. 程式人生 > >不可恢復的錯誤

不可恢復的錯誤

cee eas 通過 .網絡 HR bsp 都是 hub 不可

一直以來我對錯誤處理非常感興趣,因為我時常試想一個程序流程到達異常的時候,能不能給用戶(包括開發者)更好的體驗,實戰經驗欠缺是空想了。

今天鬼使神差翻了下 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 缺點就是【生態】【沒泛型】【其他坑】,還是值得學習的,不過適用領域還比較少,還在革命進程當中。

不可恢復的錯誤