Java異常機制優(yōu)化方案

起因
在上線了Java項目之后,運行了一段時間發(fā)現(xiàn),因為拋出大量異常導致了服務中斷,于是想著怎么解決這個問題。
在某些特定的條件下我們需要拋出異常,但異常拋出之后怎么處理其實是一個很關鍵的問題。
處理不當就會在運行上造成阻塞或崩潰。
既然捕獲了異常,就要對它進行適當?shù)奶幚?。不要捕獲異常之后又把它丟棄,不予理睬。
異常改變了程序正常的執(zhí)行流程。這個道理雖然簡單,卻常常被人們忽視。如果程序用到了文件、Socket、JDBC連接之類的資源,即使遇到了異常,也要正確釋放占用的資源。為此,Java提供了一個簡化這類操作的關鍵詞finally。
finally是樣好東西:不管是否出現(xiàn)了異常,F(xiàn)inally保證在try/catch/finally塊結束之前,執(zhí)行清理任務的代碼總是有機會執(zhí)行。遺憾的是有些人卻不習慣使用finally。
當然,編寫finally塊應當多加小心,特別是要注意在finally塊之內拋出的異常??這是執(zhí)行清理任務的最后機會,盡量不要再有難以處理的錯誤。
其次我們應該使用自定義異常,去盡可能的處理掉已知的報錯,而不是完全交由jvm去處理。,良好的代碼架構和風格也是避免問題出現(xiàn)的小細節(jié)。
標簽: