2013-06-28 5 views
0

я следующая попытка поймать:Android попробовать блок поймать

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

По моему при стоянии после метания ошибки в error catch 1 он будет снова продолжаться в то время как петля до run правда, что несколько раз мой код не делает он идет, наконец, DONE. Я действительно не знаю, как это происходит?

+0

Какие исключения улавливаются двумя уловами? Если кто-то встречается во внутреннем try-catch, который не пойман там, он упадет во внешний try-catch. – thegrinner

+0

catch 1 прерывает цикл, и исключение попадает в его блокирующий блок try и выполняет блок finally. – Aswin

+0

Он будет продолжать цикл while до тех пор, пока не будет запущено false! –

ответ

0

По моему при стоянии после метания ошибки в ошибке уловом 1 будет снова продолжаться в то время как цикл до запуска верно

Если вы бросить любой Throwable из catch1, он переходит к следующему прилагается catch, который может обрабатывать этот тип Throwable. В этом случае цикл прерывается. Если нет других catch, которые могут поймать этот тип Throwable, тогда будет выполнен finally, и управление переходит к вызывающему методу.

4

Цикл, пока будет продолжаться до тех пор:

  • run не является ложным, или
  • исключение выбрасывается в Ьгу блок, не попавшего в блоке поймать.

Например:

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

выйдет сразу, потому что вы не поймать AnException в блоке поймать (предполагая, что SomeOtherException не суперкласс AnException).