2015-05-28 2 views
2

Этот вопрос кажется довольно простым. Как я могу продолжать использовать приложение для исключения.Java - Как продолжать работать с исключением

Например, как бы я это сделал.

Серверное приложение пытается запустить порт 1234, но оно недоступно. Обычно это просто крах. Но как я могу заставить его продолжать работать и говорить; Вы хотите попробовать другой порт?

Или если мы пытаемся загрузить файл, который не существует. Как я могу избежать сбоя программы, но просто покажу небольшое сообщение о том, что он не смог загрузить файл.

Как это делается?

+6

catch исключение – Paul

+0

Как вы живете без страха? – texasbruce

ответ

7

Использовать try catch block.

try{ 
//Where exception may happen 
}catch(Exception e){//Exception type. Exception covers it all. 
//Print error if you would like or do something else 
}finally{//Finally is not required, it is something extra 
    //And code in here will run regardless of an exception or no exception. 
} 
//program continues 

Большинство примерки уловов блоков не имеют finally в конце. Вы будете finally, если вам нужен код для запуска погоды или нет, было исключение. More information about the finally block

+0

Спасибо! Похоже, что я полностью неправильно понял цель попытки поймать :) – KaareZ

+0

также после улова вы можете добавить finally {}, чтобы запустить что-либо, если оно терпит неудачу. Вы часто используете это для закрытия потоков, если они вызывают исключение. – Forseth11

+0

Не знаете, что вы имеете в виду? Разве это не то, что делает улов? – KaareZ

0

Вот пример, где подвох потерпит неудачу, но в конце концов это выполнить:

int number = 0; 

try { 
    number = 1/0; 
} catch (IndexOutOfBoundsException e) { 
    System.out.println("Nooooo!"); 
} finally { 
    System.out.println("What just happened?"); 
} 

System.out.println(number); 

Это выходы:

What just happened? 
Exception in thread "main" java.lang.ArithmeticException:/by zero 
at ... 

Улов не удалось выполнить, потому что он ловит только IndexOutOfBoundsExceptions и не ArithmeticExceptions , что вы получаете, когда пытаетесь разделить на ноль.

+0

Вы должны дать объяснение о том, что делает каждая часть. Кроме того, исключение в вашем случае вызовет исключение ArithmeticException, а не исключение IndexOutOfBoundsException. – Forseth11

+0

Хорошо, я добавил несколько объяснений. –

1

У меня была одна и та же проблема, но мой случай был исключением, вызванным двоичным древовидным классом, который прекратил выполнение программы, и я хотел, чтобы он продолжал выполнение. Таким образом, ваша проблема может быть решена с помощью написанного ниже кода.

do{ 
try{ 
    //get the value for port 
    //it may throw exception 

    } 
catch(Exception e){ 
    // handle exception 
    } 
//ask for yes or no to continue 
}while(choice);  

Ну, это будет держать просить значений портов до тех пор, как петли вы want.Use задать значения для портов непрерывно.

Помните: вы можете добавить код после блока catch, но не в промежутке между блоком try и catch.

Смежные вопросы