2014-04-21 158 views
-6
try { 
    statement 1 // executing successfully 
    statement 2 // Exception Occured 
    statement 3 // Skip Execution 
} catch(Exception e) { 
    e.printstacktrace(); 
} finally { 
    statement 4 
} 

上述代碼是trycatch塊的基本。如果st2失敗,那麼st3將執行。那麼有什麼辦法可以在st2失敗後執行st3?在java中TryCatch塊

其中一個面試問題在java中
+4

「*如果st2失敗,則st3將執行*」 - no。如果語句2出現異常,則語句3將不執行**。 –

+1

如果您希望始終執行它,則將其移至finally塊;如果只希望在發生異常時執行catch塊,請將其移至塊。 – songyuanyao

回答

0

不是。 Java逐行讀取代碼。所以當s2失敗時,它會轉到catch塊。無論如何,s4將被無論如何執行。所以你可以把s3帶到終點,即使s2失敗也會被執行。

try{ 
    statement 1 // executing successfully 
    statement 2 // Exception Occured  
}catch(Exception e){ 
    e.printstacktrace(); 
}finally{ 
    statement 3 // Skip Execution 
    statement 4 
} 

S3將在上面的例子中執行。

try{ 
    statement 1 // executing successfully 
try{ 
    statement 2 // Exception Occured 
}catch(Exception e){ 
} 
    statement 3 // Skip Execution 
}catch(Exception e){ 
    e.printstacktrace(); 
}finally{ 
    statement 4 
} 

S3也會在上面的例子中執行。

2

環繞聲明2與另一個try catch塊。在這種情況下,即使在狀態2已經被欺騙之後,語句3也會執行。如果您希望語句3僅在statemnt 2失敗後執行。移動statemnt 3來捕獲塊

0

請仔細閱讀java異常處理,它並不那麼複雜。