当前位置: 首页 > 知识库问答 >
问题:

try-statement中忽略了Android-return

杜河
2023-03-14
    null
@Override
protected InputStream doInBackground(String... arg0) {
    URL url = null;
    InputStream is = null;
    HttpURLConnection urlConn = null;
    int responseCode = 0;

    try {
        url = new URL(arg0[0]);
        urlConn = (HttpURLConnection) url.openConnection();
        urlConn.setReadTimeout(10000);
        urlConn.setConnectTimeout(15000);
        urlConn.setRequestMethod("GET");
        urlConn.connect();

        responseCode = urlConn.getResponseCode();
        Log.d("DataHandlerInternet:RESPONSE_CODE", "The response is: " + responseCode);

        is= urlConn.getInputStream(); //-->(1)<--
        return is;
    }
    catch ( MalformedURLException e ) { // new URL() went wrong!
        //TODO error message. URL is not correct!
        e.printStackTrace();
    }
    catch (SocketTimeoutException e) { // Timeout while connecting or holding connection to URL.
        //TODO error message. Timeout happened!
        e.printStackTrace();
    }
    catch ( IOException e ) { // openConnection() failed!
        //TODO error message. Couldn't connect to URL!
        e.printStackTrace();
    }
    catch( Exception e ) { // Any other Exception!
        e.printStackTrace();
    }
    finally {
        try { if(is != null) { is.close(); } } catch(Exception e) {e.printStackTrace();}
        try { if(urlConn != null) { urlConn.disconnect(); } } catch(Exception e) {e.printStackTrace();}
    }

    return null;
}
@Override
protected String doInBackground(String... arg0) {
    URL url = null;
    InputStream is = null;
    HttpURLConnection urlConn = null;
    int responseCode = 0;

    try {
        url = new URL(arg0[0]);
        urlConn = (HttpURLConnection) url.openConnection();
        urlConn.setReadTimeout(10000);
        urlConn.setConnectTimeout(15000);
        urlConn.setRequestMethod("GET");
        urlConn.connect();

        responseCode = urlConn.getResponseCode();
        Log.d("DataHandlerInternet:RESPONSE_CODE", "The response is: " + responseCode);

        is= urlConn.getInputStream();
        StringBuilder sb = new StringBuilder();
        BufferedReader br = new BufferedReader(new InputStreamReader(is));
        String line = null;
        while (  (line = br.readLine()) != null ) {
            sb.append(line);
        }
        return sb.toString();
    }
    catch ( MalformedURLException e ) { // new URL() went wrong!
        //TODO error message. URL is not correct!
        e.printStackTrace();
    }
    catch (SocketTimeoutException e) { // Timeout while connecting or holding connection to URL.
        //TODO error message. Timeout happened!
        e.printStackTrace();
    }
    catch ( IOException e ) { // openConnection() failed!
        //TODO error message. Couldn't connect to URL!
        e.printStackTrace();
    }
    catch( Exception e ) { // Any other Exception!
        e.printStackTrace();
    }
    finally {
        try { if(is != null) { is.close(); } } catch(Exception e) {e.printStackTrace();}
        try { if(urlConn != null) { urlConn.disconnect(); } } catch(Exception e) {e.printStackTrace();}
    }

    return null;
}

但是,在完成while循环之后,返回行;被完全忽略。我已经用调试器检查了字符串中的数据,它是正确的!没有错误,没有例外。

共有1个答案

田德馨
2023-03-14

finally在这两种情况下都将运行,在正常返回期间也将运行,没有异常。在finally语句子句中调用。close

所以您的代码总是返回关闭的流。也许这不是你想要的。

您的描述(“跳转到finally语句”)看起来仍然非常像urlconn.getInputStream()引发的异常。奇怪的是你没有观察到它。

 类似资料:
  • 我正在使用Slim来编写REST API,我遇到了一种情况,我需要检查用户输入的日期时间是否有效,从而提出了此代码 当我输入有效的日期时间字符串时,它可以正常工作,例如,但如果只是出于测试目的,我输入一些随机字符串,它会给出500个内部错误,而不是给我任何异常。 为什么它忽略try catch块??? 错误信息 PHP 致命错误: 调用非对象上的成员函数格式 ()

  • 我有一个使用JSoup连接和解析网站数据的程序。当网站在我给出的10秒超时后无法连接时,JSoup方法会抛出一个Uncheck edIOException。这可能包含一个IOException,例如“SSL Peer意外关闭”或“超时”,这是我过去处理过的IOExceptions。这很奇怪,因为它包含一个try catch: 我已经做了各种变通方法,比如在try-catch中包装该方法,使该方法抛

  • 问题内容: 有一个实体A引用(多对一)实体B,从B到A的反向(映射)引用。也有从A到C的引用,以及从C到A的反向引用。当我发布entityManager.remove(A )然后flush(),“ delete”没有发芽!但也没有例外。就像根本没有调用remove()一样。为什么会这样?如果在remove()之前,我们从反向引用B.listOfA和C.listOfA中提取A,则会按预期生成“删除”

  • 我有一个SBT/Scala项目,该项目包含其依赖项“ch.qos.logback”%“logback-classic”%“1.0.13”,并包含一个logback.xml文件,其内容如下: 当我运行该程序时,得到的输出如下: ... 我启用了logback配置调试,这样您就可以看到logback声称将该类的loglevel设置为ERROR。但仍然记录了这些消息。

  • 我刚刚在两个老项目中使用了NetBeans8.0.1和GlassFish4.1,它们与NetBeans8.0和GlassFish4.0配合得很好。 JDBC资源和连接池由glassfish-resources.xml定义(由NetBeans在我使用“Create Persistent Unit”和“new Data Source”选项定义新实体时生成)。 如果我在服务器上通过asadmin的add

  • 问题内容: 我需要从第二个表中选择一些行,并将它们连接成逗号分隔的字符串。除一个问题外,查询效果很好-它始终选择所有行,并忽略LIMIT。 这是我的查询的一部分,该查询获取该字符串并忽略LIMIT: 完整查询: 问题答案: LIMIT子句限制最终结果集中的行数,而不是用于在GROUP_CONCAT中构造字符串的行数。由于您的查询在最终结果中仅返回一行,因此LIMIT无效。 您可以通过使用LIMIT