Java Basic Exception

來源:互聯網
上載者:User

標籤:eth   poi   tar   basic   href   format   tin   分享   src   

異常處理經驗小結之一:不要直接拋出InvocationTargetException  (轉http://olylakers.iteye.com/blog/1137371)

在最近一段時間的工作中,積累了幾點異常處理的經驗,怕時間久了就淡忘了,因此寫下本文記錄下來,一遍日後總結和查看。

1.在通過反射執行方法的時,如Method.invoke(),如果被反射執行的方法體拋出了Exception,這個異常會被封裝成InvocationTargetException重新拋出,下面是jdk裡面的源碼:

    public Object invoke(Object obj, Object... args)    throws <span style="color: #ff0000;">IllegalAccessException</span>, IllegalArgumentException,           InvocationTargetException    {       ...........此處省略.....    }

  比如反射方法裡拋出了NullPointException,則Method.invoke方法拋出的是InvocationTargetException,而不是NullPointException,見下面的例子,此處拋出的就是InvocationTargetException。

但是InvocationTargetException太過於寬泛,在trouble shouting的時候,不能給人非常直觀的資訊,所以在處理反射方法異常的時候,我們需要把這個InvocationTargetException的targetException提取處理,重新拋出,因為這個才是對我們剖析器bug真正有協助的異常:

 

public class InvokeException {            @SuppressWarnings("null")      public void testException(){          String nullString = null;          nullString.toString();      }        public static void main(String[] args) throws Throwable {          // TODO Auto-generated method stub            try{              InvokeException invokeException = new InvokeException();              Method method = invokeException.getClass().getMethod("testException");              method.invoke(invokeException);          }catch (Exception e) {              if(e instanceof InvocationTargetException){                 // throw ((InvocationTargetException) e).getTargetException();  The Throwable.getCause() method is now the preferred means of obtaining this information.               e.getCause()            }else{                  throw e;            }          }      }  }  

 

Java Basic Exception

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.