coverity&fortify1--Poor Error Handling: Overly Broad Catch
阿新 • • 發佈:2017-07-15
hang htm 特殊 處理方法 nbsp class sql cep err
1.描述:
多個 catch 塊看上去既難看又繁瑣,但使用一個“簡約”的 catch 塊捕獲高級別的異常類(如 Exception),可能會混淆那些需要特殊處理的異常,或是捕獲了不應在程序中這一點捕獲的異常。本質上,捕獲範圍過大的異常與“Java 分類定義異常”這一目的是相違背的。
2.風險:
隨著程序的增加而拋出新異常時,這種做法會十分危險。而新發生的異常類型也不會被註意到。
3.例子:
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--Poor Error Handling: Overly Broad Catch