Java 捕获AsyncTask中HttpUrlConnection的错误

Java 捕获AsyncTask中HttpUrlConnection的错误,java,android,Java,Android,我正在寻找处理HttpURLConnection中错误的最佳实践,特别是在主机不可用的情况下。我必须如何更改我的来源 protected String doInBackground(String... strings) { URL aURL; String line; HttpURLConnection connection; BufferedReader reader; StringBuilder stringBuilder = null;

我正在寻找处理HttpURLConnection中错误的最佳实践,特别是在主机不可用的情况下。我必须如何更改我的来源

    protected String doInBackground(String... strings) {
    URL aURL;
    String line;
    HttpURLConnection connection;
    BufferedReader reader;
    StringBuilder stringBuilder = null;
    try {
        aURL = new URL(strings[0]);
        connection = (HttpURLConnection) aURL.openConnection();


        InputStream aInputStream = connection.getInputStream();
        BufferedInputStream aBufferedInputStream = new BufferedInputStream(aInputStream);

        reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
        stringBuilder = new StringBuilder();

        while ((line = reader.readLine()) != null)
        {
            stringBuilder.append(line);
        }

    } catch (IOException e) {
        Log.d("svc", e.toString());
    }
    return stringBuilder.toString();
}

您将使用connection.getResponseCode()获得不同的响应代码
检查主机的响应代码不可用,您将被设置。

那么,异常被捕获-您希望发生什么?由于您最初没有分配
stringBuilder
,如果您有异常,那么您将在
返回stringBuilder.toString()时遇到问题(我想是NullPointerException)嗨,我想返回结果-好的,我可以通过return语句来实现,但对我来说更重要的是:如何捕获连接(connection=(HttpURLConnection)aURL.openConnection();)引发的异常,或者一个catch块就足以做到这一点吗?但是如果服务器不可用(网络不稳定),会发生什么呢。在这种情况下,getResponseCode()的结果是什么?除了
HttpStatus.SC\u OK