關於異常處理

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。

如何更好地處理異常這個問題困擾了我幾個星期了,寫一點自己的感想

一、為什麼要有異常機制?

①在傳統語言C語言中,當你操作資源時,一般是通過函數傳回值code來判斷是否執行成功(一般是失敗返回小於零的整數)。
②指令碼語言,比如Python、PHP等,由於沒有傳回型別的限制,一般是return false on failed。當然,這些指令碼語言也有異常機制。
③多傳回值語言(Golang),一般是通過返回多個值(可能包含error對象),然後通過error值來判斷操作是否成功。

二、總結
從上面幾個例子可以看出,①返回錯誤碼②返回false等,這些錯誤資訊不夠清晰,很多時候也避免不了層層嵌套判斷的漩渦中。③的方式還不錯,不過每次都得check error
作為一門靜態語言,java是單傳回值、傳回型別確定的,當出現異常不能返回指定的類型時(當然,你可以返回null或empty object,但一般不推薦返回null),這個時候異常機制便能很好地解決這個問題。函數調用者只需關心調用這個函數會返回什麼,異常需不需要這層處理還是繼續往上拋,可以大大減輕調用者的負擔(如果不需要這層處理,我只需關心api會返回什麼,按照自己的邏輯往下寫,並不需要check error,資源釋放推薦使用try-with-resource)
但是如果是unchecked exception,則必須在doc註明函數會拋什麼異常,以便調用者使用,這一點不管是java、python還是php。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.