2012-10-28 40 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