這真的該用try-catch嗎?


前言

我有個技能,就是把“我”說的聽起來特別像“老子”。

以前是小嘍啰的時候,會跟領導說“我!不加班。”,聽起來就像“老子不加班!”一樣。到最后發現,我確實沒有把計划內的工作拖到需要加班才能完成,這個“老子”也就慢慢的被承認了!到后來我帶隊的時候,我說“我不讓你們加班!”,這個時候聽起來絕對不像“老子不讓你們加班!”,后來他們也真的不加班就把項目漂亮的做完了,相信他們願意承認我有“老子”的本事。

哈哈!這個有點妄自尊大了喲。做到就可以了,千萬別這么講啊!低調,低調。不過什么事情我都能做到不加班,這事是真的。在這一系列文章里我要告訴大家一系列的實踐經驗,實施之后會發現:你能夠一次交付了!再也不用加班了!有更多時間陪老婆孩子了!有更多時間陪哥們兄弟了!還可能有更多事情去把妹了!……總之好處多多。

本文講述第一個原則——這真的該用try-catch嗎?以后會不定期更新。

 

這真的該用try-catch嗎?

用try-catch之前一定要三思啊!其實絕大多少情況都是不應該用try-cath的。機器的行為具有非常大的確定性,尤其是CPU,它的處理過程就是一系列的與、或、非的組合。曾經在http://bbs.pfan.cn/上看到一則廣告,一個程序員研究出來成果了——機器已經具有了智能!為什么呢?機器能給出不確定的結果啊——有時候你用的操作系統、軟件非常流暢好用,有時候仿佛專門使壞一樣。靠!把程序的bug當人工智能,也是醉了。人才是比較“欠”的,你讓他輸入數字,可偏偏輸入abc;你讓他輸入abc,他偏偏輸入數字。所有欠揍的機器背后都有一群欠揍的程序員!

所以開發中要靈活處理的地方只有處理自然人跟機器交互的地方!其他地方能夠約定清晰的時候盡量約定清晰,而不是依賴異常處理與恢復機制。

約定清晰說明對程序內部的行為完全掌握了,這樣的代碼執行效率高、好調試。換句話說代碼中用的try catch越少,程序越穩健。java對錯誤處理只引入了異常處理機制,所以java中有兩類異常checked和unchecked,unchecked本質上是錯誤,一個已經發布的程序原則上是不允許出現unchecked的異常的。c c++ c#等語言引入了assert機制,這種機制會使得程序遇到錯誤的時候直接中止執行,這種機制,錯誤沒法隱藏。
 
能夠約定清晰的時候盡量約定清晰,是為了現在不加班啊!哥們!約定清晰了,寫代碼的時候是不是就流暢了啊,是不是不用寫那么多破壞結構的try-catch了啊!否則寫代碼跟便秘一樣,不加班才怪呢!
 
不要用try-catch讓錯誤隱藏起來,是為了以后不加班啊!哥們!錯誤隱藏起來,以后出了類似“人工智能”的錯誤搞死你!哭爹喊娘,找都找不到!
 
不要理解錯誤啊!約定清晰包括把異常也考慮進去,微軟的員工寫了一本書好像叫《怎么編寫無錯誤的代碼》,里面提到很多錯誤都在錯誤處理里面。異常表示什么——可能性和無法杜絕。需要考慮用異常的地方有——IO和別人的代碼。IO好理解,網絡通信、文件讀寫、數據庫連接等等。別人的代碼也很好理解啊——你不欠,不代表別人不欠啊。不要假定別人都是欠的哦,這樣你還得考慮別人怎么欠的,多累啊。就像生活一樣,不要以惡意揣摩別人,這樣你將會生活在恐懼中!先假設別人不欠,等出問題了,罵他揍他都行——這事兒得你們自己負責,別說我教唆的!
 
關於這個原則,很多介紹具體實踐方法的文章都提到了,這就有一篇—— assert()函數用法總結
 
發現很多只會java的或者先學java的對這個原則不能接受。哪些從匯編、C、C++一路斬上來的很容易接受這個原則。不接受不要緊,別上來就噴我!噴完噴前,還是都思考一下。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM