Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java HttpURLConnection中有意义的错误_Java_Android_Http - Fatal编程技术网

Java HttpURLConnection中有意义的错误

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);

我使用以下代码发布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);
    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产生的异常进行推理,它就不应该真正重要。通常更大的问题是向用户堆栈跟踪泄露太多信息,以及其他调试信息