不可恢復的錯誤
阿新 • • 發佈:2018-05-11
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 缺點就是【生態】【沒泛型】【其他坑】,還是值得學習的,不過適用領域還比較少,還在革命進程當中。
不可恢復的錯誤