这个算是编码的坏习惯吧?
生活随笔
收集整理的這篇文章主要介紹了
这个算是编码的坏习惯吧?
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
公司做HW外包,每行代碼都要經(jīng)過checkstyle,重復(fù),圈復(fù)雜度的各種考驗(yàn),而檢測工具包含篡改過的第三方,或HW的DIY。公司的同事在各種規(guī)則下,也找到了各種應(yīng)對方法。
昨天發(fā)現(xiàn)項(xiàng)目一個Bug,Debug后發(fā)現(xiàn)如下代碼段(非原碼,僅示例)
1 public static Object errExample(byte[] bytes){ 2 Object obj = null; 3 ObjectInputStream ois; 4 try { 5 ByteArrayInputStream bis = new ByteArrayInputStream(bytes); 6 ois = new ObjectInputStream(bis); 7 obj = ois.readObject(); 8 } catch (IOException e) { 9 // Wrong, because may be subclass of IOExcption 10 Logger.getRootLogger().error("IOException is : " + "diy message."); 11 } catch (ClassNotFoundException e) { 12 Logger.getRootLogger().error("ClassNotFoundException is " + "diy message."); 13 } 14 return obj; 15 }在第10行,捕捉了非運(yùn)行時(shí)異常IOException,直接手工寫了IOException,但實(shí)際項(xiàng)目中拋出的卻是子類EOFException。原因呢,是在Socket實(shí)現(xiàn)RMI時(shí)byte數(shù)組長度寫死,而實(shí)際的對象轉(zhuǎn)碼后超過門限,多余的被截去了。
所以在記錄日志時(shí),只使用代碼應(yīng)該就差不多了。
Logger.getRootLogger().error(e);因?yàn)轭怲hrowable已經(jīng)寫的夠用了。
1 public String toString() { 2 String s = getClass().getName(); 3 String message = getLocalizedMessage(); 4 return (message != null) ? (s + ": " + message) : s; 5 }?
轉(zhuǎn)載于:https://www.cnblogs.com/xzs603/archive/2013/01/27/2878690.html
總結(jié)
以上是生活随笔為你收集整理的这个算是编码的坏习惯吧?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 安装程序集'' policy.8.0.m
- 下一篇: javascript中的call()和a