[英]How we make Java Code to jump to finally
這是我看到的代碼
1 session s=null;
2 try{
3 s= SessionCreator.createSession();
4 System.out.println("Session Created");
5 s.validate();
6 }catch (Exception e){
7 e.printStackTrace();
8 }finally{
9 s.close();
10 }
調試器從第3行跳到第9行,這怎么可能? 4,5和7均未執行。 這讓我感到困惑。 第3行是供應商代碼,所以我不知道發生了什么。 有什么線索嗎?
嘗試使用catch (Throwable e)
代替Exception
。 一個錯誤可能會拋出一個錯誤是沒有“異常”的子類,而是延伸“的Throwable”。
這是一個示例: http : //ideone.com/Zs7HGw
在這里閱讀。
http://docs.oracle.com/javase/tutorial/essential/exceptions/handling.html
放在try
塊中的任何代碼都有可能失敗。 如果它確實失敗了(可能在第2或4行),它應該跳出try
塊並進入catch
塊。 finally
塊將以任何一種方式執行。
如果第2行失敗,您的描述聽起來是正確的,除了應該執行第6行。 如果第6行沒有執行,則整個try
塊都將成功執行。 確切的輸出是多少?
如果第4行和第7行都沒有執行, 也許 (並且我強調“也許”是因為我不十分了解Java異常機制),第3行不是拋出Exception
對象,而是拋出Error
或Throwable
。
我僅從底層代碼服務器端與我們在本地看到的代碼不對應的遠程調試會話中知道此問題。 由於調試器僅通信線路而不是代碼本身,因此可能導致無法進行的跳轉。
您是否進行遠程調試? 即使沒有,您能否再次構建整個項目?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.