Как выйти из исключения ловли - PullRequest
0 голосов
/ 06 октября 2011

Я использую Java для подключения к http-серверу.Все хорошо.Конечно, я ловлю исключения (SocketTimeoutException, ConnectException, IOException).Но моя проблема в том, что когда (например) ConnectException происходит, приложение остается застрявшим.Я больше не могу продолжать в другой части программы ... Я пытался "return ..", System.exit (но я не хочу выходить из приложения).Есть идеи?

Скелетная прога выглядит так:

boolean metod_to_check_http_server(){

try{
Create_connection(URL);
Set_Time_Out(3000);
open_HTTP_Connection();
Close_Connection();
return true; // All this part is fine...
}


catch (EXCEPTIONS)
{ // Here I know I have connection problem
// how could I return to main prog from here ?
// return false ? not work...
// System.exit(..); // too violent !
// so ?
}

Ответы [ 4 ]

0 голосов
/ 06 октября 2011

Вы должны сами обработать исключение и вернуть false, если соединение не удалось или оно недопустимо ....

boolean method_to_check_http_server(){

    try{
        Create_connection(URL);
        Set_Time_Out(3000);
        open_HTTP_Connection();
        return true; // All this part is fine...
    } catch (EXCEPTIONS) {
        displayError();
        return false;
    } finally {
        Close_Connection();
    }
}

Как видите, я убедился, что мое соединение закрыто (в концеблок), чтобы я не оставлял открытые сокеты запущенными в каком-то потоке ОС где-то.

0 голосов
/ 06 октября 2011

Если вы добавите блок finally в оператор try - catch, вы можете продолжить свой поток

try
{

}
catch{

}
finally{

}
0 голосов
/ 06 октября 2011

На ваш вопрос нельзя ответить, не зная больше о вашей программе и среде, но может быть хорошей идеей сообщить пользователю об ошибке подключения, например, в диалоговом окне с сообщением «Ошибка подключения».И не забудьте закрыть все открытые соединения в блоке finally.

0 голосов
/ 06 октября 2011

Постарайтесь добавить в свой блок, наконец, код после первого.

...