1 DataInputStream dis = null; 2 try { 3 if(true) { 4 throw new IllegalArgumentException("IllegalArgumentException is throw in here"); 5 }else { 6 dis = new DataInputStream(new FileInputStream("C:\\test")); 7 } 8 }catch(NullPointerException e) { 9 System.out.println(e); 10 }finally { 11 dis.close(); 12 }
這只是一段測試代碼,代碼的本意是想拋出一個IllegalArgumentExceptioni,但是最后卻拋出了一個空指針異常,主要是因為在finally中沒有判斷dis是否為空,這樣的話就把原來的異常給掩蓋了,在LOG的輸出中給程序的DEBUG帶來了困難,造成了一種假象是空指針的錯誤.在編碼的時候我們注意一下這個問題.
|