2012-07-03 2 views
2

Пример: скажем, я хочу открыть файл. Если я получу FileNotFoundException, мне нужно подождать некоторое время и повторить попытку. Как я могу изящно сделать это? Или мне нужно использовать вложенные блоки try/catch?Java продолжить выполнение цикла, если исключение было throwd

Пример:

public void openFile() { 
    File file = null; 
    try { 
     file = new <....> 
    } catch(FileNotFoundException e) { 
    } 
    return file; 
} 

ответ

5

Вы можете использовать do { ... } while (file == null) конструкцию.

File file = null; 

do { 
    try { 
     file = new <....> 
    } catch(FileNotFoundException e) { 
     // Wait for some time. 
    } 
} while (file == null); 

return file; 
+0

Спасибо, это было так просто :) – Chris

+0

Хех .. да. Пожалуйста. – aioobe

1
public File openFile() { 
    File file = null; 
    while(true){ 
     try { 
      file = new <....> 
     } catch(FileNotFoundException e) { 
      //wait for sometime 
     } 
     if(file!=null){ 
       break; 
     } 
    } 
    return file; 
} 
3
public File openFile() { 
    File file = null; 
    while (file == null) { 
    try { 
     file = new <....> 
    } catch(FileNotFoundException e) { 
     // Thread.sleep(waitingTime) or what you want to do 
    } 
    } 
    return file; 
} 

Обратите внимание, что это несколько опасный метод, так как нет никакого способа, чтобы выйти, если в конце концов, пока не появится файл. Вы можете добавить счетчик и дать после определенного числа попыток, например:

while (file == null) { 
    ... 
    if (tries++ > MAX_TRIES) { 
    break; 
    } 
} 
Смежные вопросы