Java HttpURLConnection中有意义的错误
我使用以下代码发布HTTP GET并检索响应:Java HttpURLConnection中有意义的错误,java,android,http,Java,Android,Http,我使用以下代码发布HTTP GET并检索响应: boolean download(String url) { try { java.net.URL connectURL = new URL(url); HttpURLConnection conn = (HttpURLConnection)connectURL.openConnection(); conn.setDoInput(true); conn.setDoOutput(true);
boolean download(String url)
{
try
{
java.net.URL connectURL = new URL(url);
HttpURLConnection conn = (HttpURLConnection)connectURL.openConnection();
conn.setDoInput(true);
conn.setDoOutput(true);
conn.setUseCaches(false);
conn.setRequestMethod("GET");
conn.connect();
conn.getOutputStream().flush();
try( InputStream is = conn.getInputStream() )
{
int ch;
StringBuilder sb = new StringBuilder();
while( ( ch = is.read() ) != -1 )
{
sb.append( (char)ch );
}
mScores = sb.toString();
}
catch( final Exception e)
{
mReceiver.exception("biffed it getting HTTPResponse");
return false;
}
}
catch( final Exception e )
{
mReceiver.exception(e.getMessage());
return false;
}
return true;
}
除了错误案例之外,一切都很好。例如,如果我在运行此代码的设备上关闭了对Internet的访问,请重试
download("http://example.com/download.cgi");
然后,我的用户看到的上面的异常mReceiver.exceptione.getMessage是
Unable to resolve host 'example.com': No address associated with hostname
这对于开发人员来说可能是可以理解的,但是IMHO不够友好。我想要一些类似于无法访问Internet、无法访问服务器“example.com”或更简单的“无法访问Internet”的内容
因此,我的问题是:有没有一种方法可以从上述代码中返回有意义的、用户友好的错误字符串 您可以捕获特定类型的异常,这需要在捕获最终异常e之前执行: 捕获最终java.net.UnknownHostException e { mReceiver.exception无法访问Internet,无法访问服务器“+url+”; 返回false; }
嗯,是的,很明显。我想我只需要仔细阅读这些调用可能产生的所有异常,并确定适当的错误字符串。。。谢谢。@Leszek FWIW,异常/错误并不是真正对用户有用的,所以这样做对您没有什么好处。只要您能够对Java产生的异常进行推理,它就不应该真正重要。通常更大的问题是向用户堆栈跟踪泄露太多信息,以及其他调试信息