java开发常见异常_最常见的Java异常及其对Java开发人员的评价
java開發常見異常
我知道我說過在完成視頻之前我不會發帖,但這一直困擾著我。 至于視頻的更新,我有些懶散,有些忙碌,但是我已經準備好記錄第一集,這是我第一次有機會,而且我不需要太多的編輯。 無論如何,還是今天的話題。
Takipi博客最近發布了兩篇有關前10個 最常拋出的異常 (已記錄)的文章。 這10個例外占這些日志中97%的例外。 我想按從最常見到最不重要的順序列出這些例外情況,并簡要說明這些例外情況。
空指針異常
NPE排在這個名單上,甚至排在榜首,這對很多人來說并不奇怪,但事實并非如此! 這些異常是可以避免的。 有兩種相對著名的方法可以避免Java中已經存在的空對象模式和Optional類型, 并且如果您切換到具有空安全性的語言(例如Kotlin,它與Java完全兼容),您幾乎不需要考慮避免使用NPE。
我們都應該通過采取良好的預防措施(除非正常的空值檢查是從第三者那里獲得的,除非正常情況下,我不認為正常的空值檢查是最佳方法),才能努力防止這些異常。有助于預防NPE的語言。
NumberFormatException和ParseException
ParseException在列表中排名第9,但與NumberFormatException密切相關,我發現確實令人不安的是, 這兩個都位于前10名中,其中之一是#2。 兩者都與將String數據解析為其他內容有關,我不禁認為,由于這些異常的普遍性,開發人員并未充分利用類型系統來發揮自己的優勢, “字符串型”編程。
現在,這些異常中的很大一部分可能是由于用戶輸入錯誤或某種序列化問題引起的,但是那里可能也存在太多的“字符串類型”對象。 由錯誤的用戶輸入引起的錯誤可能應該在通過解析器之前進行檢查,而這恰恰是初始輸入驗證的一部分。
我的意思可能是我想說的更苛刻。 在許多情況下,這些都是很難避免的例外,將它們排在前十名也就不足為奇了。
NoSuchMethodException和InvocationTargetException
這兩種情況都是在反思中發生的,我可能不會多說,但我非常不喜歡反思。 幾乎總是有另一種方式。 那樣的方法可能并不容易,但是我相信它總是總會更好,因為事情變得更加明確和易于理解,并且您會從錯誤中獲得更多的編譯器幫助。
肯定有一些避免反射的異常(例如,使用反射運行所有測試的JUnit),但是我敢肯定,這些異常中的大多數都是無緣無故拋出的,使用常規編程技術可以避免問題。
要查看關于避免像反射這樣的“魔術”的真正好話,請查看“ 8行代碼” (很難進行,因為視頻只看著揚聲器,而且他在幻燈片中回跳得還不錯,所以甚至很難與幻燈片一起跟隨)。 這也是我選擇Java Spark而不是Spring的原因之一。
IllegalArgumentException
我實際上不介意出現這個問題。 這意味著很多人正在檢查他們的輸入,并確保他們不會搞砸一切。 有一些方法可以減少計數,例如使用真正強壯的類型,例如Object Calisthenics的建議(規則3和4),但這是一組故意過分熱心的規則,可以幫助您學習,并且遵循它只是將IllegalArgumentException進一步推到一個位置。
RuntimeException和Exception
真? 真?! 那只是無濟于事,特別是Exception。 我可以理解將異常轉換為運行時異常,但是僅使用RuntimeException并不是最好的方法。 為此設置一個自定義異常,即使它與WrappedException一樣通用。
IllegalStateException
同樣,好的OO設計可以解決此問題,但是有時很難提出這些設計。 我會輕松一點的。
ClassCastException
我不知道這件事的感覺。 我擔心在泛型可用時有多少可能是由反射或使用原始類型引起的。 在這兩種情況下,都必須停止。 但是我也知道,有很多地方真的很難避免,因此我不會對此進行豎琴演奏。
結論…
在該例外列表中,令我最擔心的是Java代碼中普遍存在的NPE和反射問題的數量。 其他許多人都與弱的OO設計有關,但是我知道那里有很多新手或經驗不足的開發人員,或者他們的問題使其很難和/或不值得進行更深入的開發。 我不得不放開那些案件。
請讀者,如果您從中學習到任何東西,請了解一下,將來可能通過學習如何解決null問題(通過使用null安全語言或使用Optional或Null Object模式)可以避免很多頭痛。嘗試看看您可以從代碼中獲取多少反射和注釋。
翻譯自: https://www.javacodegeeks.com/2016/06/common-java-exceptions-says-java-devs.html
java開發常見異常
總結
以上是生活随笔為你收集整理的java开发常见异常_最常见的Java异常及其对Java开发人员的评价的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 小米6的安卓版本是多少(小米6的安卓版本
- 下一篇: jboss项目导入idea_如何导入任何