JAVA不經過Catch(Exception e)直接到finally或者退出原因


  今天遇到一個很奇葩的問題!在寫Hadoop程序的時候!new一個對象!程序直接跑到finally代碼塊里面去了!Catch里面的Exception也沒有執行。

Configuration configuration = new Configuration();

  害我納悶了好久!就去看了Hadoop的源碼!new這個對象的時候也沒執行哪些操作,只是一些正常的賦值而已!后來網上找了很久才發現,原來是被變成Throwable拋出來了!而Exception是Throwable的子類,所以無法捕捉到,只有捕捉Throwable的時候,才可以將錯誤信息打印!

  具體原始是由於Hadoop的Configuration類中有個靜態的變量,在ClassLoader加載class的時候,發生了異常

private static final Log LOG =
    LogFactory.getLog(Configuration.class);

  我的錯誤很弱智,只是因為沒有把 common-logging的包加進去而已! 相信一般情況這種事情很少人會遇到!但今天遇到了,就當是經驗教訓,也好讓有這方面的疑問的人可以得到解決!所以呢,以后不要以為Catch(Exception e)就算是萬事大吉了,throwable才是終極BOSS!

  至於為什么這里拋出的是Throwable而不是Exception?我一直找都沒找到原因! 希望哪位大牛能夠告知一下!小弟在此謝過了!

 

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM