2014-09-02 164 views
0

我試圖在Android下開發。現在我嘗試使用網絡。異常不會拋出

我有「經理級」

private String makeQuery(String string){ 
    Log.d("makeQuery", "in"); 
    try{ 
     NetTask a = new NetTask(server_url); 
    }catch(IOException e){ 
     Log.d("makeQuery", "exception"); 
    } 
    Log.d("makeQuery", "out"); 
    return "string"; 
} 

它有查詢方法來通過HTTP我自己的API服務器。它採用NetTask對象,NetTask繼承的AsyncTask

public class NetTask extends AsyncTask<String, Void, Void> { 

HttpURLConnection connection; 

public NetTask(URL server) throws IOException{ 
    Log.d("NetTask", "Create"); 
    connection = (HttpURLConnection)server.openConnection(); 
    connection.setReadTimeout(10000); 
    connection.setConnectTimeout(15000); 
    connection.setRequestMethod("GET"); 
    connection.setDoInput(true); 
    connection.setDoOutput(true); 
    Log.d("NetTask", "Connect"); 
    connection.connect(); 
    Log.d("NetTask", "Response"); 
    int response = connection.getResponseCode(); 
    Log.d("NetTask", "The response is: " + response); 
} 

在我來說,我得到下次登錄:

[makeQuery]

[NetTask]

  • 創建
  • 連接

那麼,爲什麼線Log.d( 「makeQuery」, 「出」);無法到達?

+0

趕上後終於使用。儘管應該記錄異常。 – icbytes 2014-09-02 17:54:35

+1

也許它會引發另一個異常? – 2014-09-02 18:04:08

+0

是的,你說得對。它拋出別的東西,我使用異常而不是IOException並且它工作。謝謝。 – chubakur 2014-09-02 18:12:57

回答

1

爲什麼Log.d("makeQuery", "out");不可用?

try{ 
     NetTask a = new NetTask(server_url); 
    }catch(IOException e){ 
     Log.d("makeQuery", "exception"); 
    } 

原因是NetTask類拋出其他類型的異常。

你會變成

}catch(Exception e){ 
     Log.d("makeQuery", "exception"); 
    } 

但好的做法說趕上正確的異常,評論的異常處理和看着你logcat的異常的類型。