2014-09-02 128 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的异常的类型。