亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

一道關于Java的try-catch類型的題目,麻煩大佬幫忙看看

一道關于Java的try-catch類型的題目,麻煩大佬幫忙看看

開滿天機 2022-02-18 11:11:33
Given:11. static void test(){12. try{13. String x = null;14. System.out.print(x.toString() + " ");15. }16. finally{System.out.print("finally ");}17. }18. public static void main(String[] args){19. try{test();}20. catch(Exception ex){System.out.print("exception ");}21. }What is the result?A. nullB. finallyC. null finallyD. Compilation fails.E. finally exception答案:E12行的try語句中,可以沒有catch語句么?20行的catch是在finally語句之后執行的么?最后就是20行catch的錯誤是什么呢?因為x.toString()這個方法的問題么?
查看完整描述

2 回答

?
慕村225694

TA貢獻1880條經驗 獲得超4個贊

try塊后catch塊不是必須的,但如果try塊后沒有catch塊,就必須有finally塊,也就是說try不能單獨使用。
try塊后不接catch,在框架設計上常出現,本方法若出現Exception時,自己不處理,拋出到框架專門處理Exception的特定位置去統一處理。

這個Exception會向上拋至調用處,如果仍沒有catch就會再向上拋,如果程序一直沒有處理,這個Exception最后會拋到jvm中,然后jvm就會報告一個錯誤。

你這里的代碼,Exception會在main函數的try-catch中捕獲并處理。
20行的catch是屬于另一個try塊的,與test函數中的finally無關。當test函數的try塊中出現異常,就會直接跳進finally,finally塊中的內容執行完后,再將產生的異常向調用者拋出,也就是main函數。在main函數的try-catch中捕獲并處理。
也就打印了finally exception

最后被catch到的異常是NullPointerException空指針異常。
第13行 String x = null;
對象都不存在,第14行x.toString()就會產生一個NullPointerException。

查看完整回答
反對 回復 2022-02-21
?
大話西游666

TA貢獻1817條經驗 獲得超14個贊

12行的try語句可以不用catch.這里發生的空指針異常在20行的catch處理了。
20行的catch是在finally語句之后執行的么? 是的。
錯誤原因就是x.toString()這個方法,發生空指針異常。
x不能為null。

查看完整回答
反對 回復 2022-02-21
  • 2 回答
  • 0 關注
  • 183 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號