2012-10-28 37 views
-4

所以我在下面的屏幕截圖中有這段代碼導致了類型IOExceptions。Try-Catch Statement Trouble

http://southwestdesign.org.uk/Code.jpg

有人告訴我,我需要將其包裝在一個try-catch塊,每個包裝塊invididual一個嘗試捕捉消除了錯誤,但力在Android上關閉。有人能指點我正確的方向嗎?

@Override 
    public void onStart() { 
     HttpClient client = new DefaultHttpClient(); 
     HttpGet request = new HttpGet("http://1.php"); 
     HttpResponse response = client.execute(request); 
     BufferedReader rd = new BufferedReader 
     (new InputStreamReader(response.getEntity().getContent())); 
     TextView textView = (TextView) findViewById(R.id.TextView1); 
     String line = ""; 
     while ((line = rd.readLine()) != null) { 
      textView.append(line); 
     } 
    } 

謝謝你們。

+3

你應該讀一些關於java的基本知識。我建議用java思考 – Blackbelt

+0

你甚至應該在任何其他事情之前谷歌。 – Siddharth

+0

我同意,SO應該是您的最後手段 – chrislhardin

回答

0
try { 

    //do something here 
    //call method 

}catch (IOException ioe){ 

// do something else 
// log ioe 

} 
0

它應該是這樣的:

@Override 
    public void onStart() { 

    try { 
    HttpClient client = new DefaultHttpClient(); 
    HttpGet request = new HttpGet("http://1.php"); 
    HttpResponse response = client.execute(request); 
    BufferedReader rd = new BufferedReader 
    (new InputStreamReader(response.getEntity().getContent())); 
    TextView textView = (TextView) findViewById(R.id.TextView1); 
    String line = ""; 
    while ((line = rd.readLine()) != null) { 
     textView.append(line); 
    } 

    }catch (IOException ex){ 
    } 
} 

更優選使用AsyncTask工作再上一個單獨的線程完成這件事。

4

你似乎在UI線程上執行網絡IO,這是一個壞主意。因此,自從Android 2.3以來,系統「捕捉」了這一點並且終止了這個過程。

你應該把

HttpResponse response = client.execute(request); 

到後臺線程例如通過使用AsyncTask