2013-06-28 126 views
0

我有以下嘗試捕捉:的Android try catch塊

try 
{ 
    while(run) 
    { 
     try 
     { 
     // try something 
     } 
     catch 
     { 
     // error catch 1 
     } 
    } 
} 
catch() 
{ 
    // error catch 2 
} 
finally 
{ 
    // DONE 
} 

按我的下error catch 1拋出錯誤後,站在它會再次繼續while循環,直到run是真實的,有些時候我的代碼是不是做它終於進入DONE代碼。我真的不知道它是如何發生的?

+0

這兩種漁獲物有哪些例外?如果發生在沒有捕獲到的內部試驗捕獲物中,它將落到外部嘗試捕獲物。 – thegrinner

+0

catch 1打斷循環,異常將由其封閉的try塊捕獲並執行'finally'塊 – Aswin

+0

它將繼續運行while循環,直到運行爲false! –

回答

0

按我下的錯誤捕獲1拋出錯誤後,站在它會再次繼續while循環,直到運行是真的

如果catch1任何Throwable,它進入下一附上catch可以處理該類型的Throwable。在這種情況下,循環會中斷。如果沒有其他catch可以捕獲該類型的Throwable,則finally將執行並且控件轉到調用方法。

4

while循環會一直持續到:

  • run是假的,或者
  • 一個例外是未在catch塊捕獲try塊拋出。

例如:

while(true) { 
    try { 
     throw new AnException(); 
    } catch (SomeOtherException e) {} 
} 

將立即退出,因爲你不趕在catch塊AnException(假設SomeOtherException不是AnException超類)。