多個catch 區塊看起來既難看又繁瑣,但使用一個「簡約」的catch 區塊捕捉高層級的異常類別(如Exception),可能會混淆那些需要特殊處理的異常,或是捕捉了不應在程式中這一點捕獲的異常。本質上,捕獲範圍過大的異常與「Java 分類定義異常」這一目的是相違背的。
隨著程式的增加而拋出新異常時,這種做法會十分危險。而新發生的異常類型也不會被注意到。
try{ //IOoperation // } catch(Exception ex){ Log(ex); }
Fortify建議你分別處理可能出現的異常,因為不同類型的異常需要不同的處理方法,所以應該把try{}裡可能出現的異常都枚舉出來,然後分別處理,正確的代碼寫法如下:
try { //IOoperation // } catch (IOException e) { logger.error("doExchange failed", e); } catch (InvocationTargetException e) { logger.error("doExchange failed", e); } catch (SQLException e) { logger.error("doExchange failed", e); }
#
以上是coverity&fortify1-糟糕的錯誤處理:過於廣泛的捕獲的詳細內容。更多資訊請關注PHP中文網其他相關文章!