2011-10-06 106 views
0

我使用java連接到http服務器。一切皆好。當然,我收到了例外(SocketTimeoutException,ConnectException,IOException)。但我的問題是(例如)ConnectException發生時,應用程序停滯不前。我不能繼續在程序的其他部分...我試過"return ..", System.exit(但我不想退出應用程序)。任何想法 ?如何退出捕捉異常

骨架PROG看起來是這樣的:

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 ? 
} 

回答

0

如果添加finally塊來你的嘗試 - catch語句,你可以繼續你的流量

try 
{ 

} 
catch{ 

} 
finally{ 

} 
+0

它總是最基本的東西卡住了。我看到了doc中的「finally」塊,但沒有寫得很好。當然,它的工作。謝謝你們所有人去除我眼中的陰影。 – Zamboo

0

試圖把finally塊在你的代碼捕獲一個後。

0

你的問題不能沒有更多地瞭解你的程序和環境來回答,但它可能是告知一個好主意用戶關於連接失敗,例如在一個對話框中顯示「連接失敗」。並且不要忘記關閉finally區塊中的任何打開的連接。

0

你應該做的異常處理自己,如果連接失敗或無效,則返回一個錯誤....

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(); 
    } 
} 

正如你所看到的,我確信,我的連接被關閉(finally塊),這樣我就不會在某個操作系統線程中留下打開的套接字。