开发者社区> 问答> 正文

请问布尔值方法是怎么理解

尔值方法怎么理解呢?看代码,每次在最后return XX;的时候总是有点理解不了,特别是看API的时候......请问用下面这段代码讲解一下,怎么理解这种有布尔值的方法?
这段代码有两个return.

private boolean downURlToStream(String url, OutputStream outputStream) {

                BufferedInputStream in = null;
                BufferedOutputStream out = null;
                HttpURLConnection http = null;

                try {
                        URL url1 = new URL(url);
                        http = (HttpURLConnection) url1.openConnection();
                        http.setReadTimeout(3000);
                        http.setRequestMethod("GET");
                        in = new BufferedInputStream(http.getInputStream(), 8 * 1024);
                        out = new BufferedOutputStream(outputStream, 8 * 1024);

                        int b;
                        while ((b = in.read()) != -1) {

                                out.write(b);
                        }

                        return true;
                } catch (MalformedURLException e) {
                        e.printStackTrace();
                } catch (IOException e) {
                        e.printStackTrace();
                } finally {
                        if (http != null) {
                                http.disconnect();
                        }
                        try {
                                if (in != null) {
                                        in.close();
                                }

                                if (out != null) {
                                        out.close();
                                }
                        } catch (IOException e) {
                                e.printStackTrace();
                        }
                }
                return false;
        }

展开
收起
蛮大人123 2016-03-10 18:34:22 2145 0
1 条回答
写回答
取消 提交回答
  • 我说我不帅他们就打我,还说我虚伪

    题主需要清楚两点:

    在函数体中,一旦执行了return语句,就会跳出这个函数体,return后面跟的表达式的值就是函数的返回值。
    在try-catch-finally的复合语句中,如果try中的语句抛出异常,则会直接跳转到相应异常的catch语句中去。无论try中的语句有没有抛出异常,在执行完try或catch中的所有语句后,总会继续执行finally中的语句。
    所以,当try中的语句没有任何异常时,其中最后一句return true;语句就会使函数返回true。而如果有异常抛出,则会跳转到相应异常的catch语句中去,从而把try中的return true;给跳过了,这样在执行完finally以后,函数体的最后一个return false;语句被执行,使函数返回false。

    2019-07-17 18:58:09
    赞同 展开评论 打赏
问答分类:
API
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载