我目前正在编写一个简单的方法来快速构建HttpURLConnection,并且在理解发生的异常时遇到了一些问题。目前,它看起来像这样:如何处理由java.net.URL.openConnection()抛出的IOException?
public static HttpURLConnection buildConnection(String urlString) throws IOException{
try{
URL url = new URL(urlString);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
connection.setReadTimeout(10000 /* 10 seconds */);
connection.setConnectTimeout(10000 /* 10 seconds */);
return connection;
} catch (MalformedURLException e){
// Impossible - All network URLs are taken from String resources
Log.w(LOG_LABEL, "URL \"" + urlString + "\" was malformed");
e.printStackTrace();
return null;
} catch (ProtocolException e){
// Impossible - "GET" is a valid Request method
e.printStackTrace();
return null;
}
}
我赶上并记录MalformedURLException的和的ProtocolException异常,因为我知道这是不可能的,他们会发生。但是,我抛出了可以通过url.openConnection()抛出的IOException。这是什么例外?什么原因导致它,以及我的应用程序如何发生一个行为?
谢谢大家了, 威廉
谢谢格拉德温。这是一个很好的具体答案。我将通过首先重试来处理IOException,然后向用户显示一条通用的网络错误消息。 – 2013-03-22 16:38:50