尔值方法怎么理解呢?看代码,每次在最后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;
}
题主需要清楚两点:
在函数体中,一旦执行了return语句,就会跳出这个函数体,return后面跟的表达式的值就是函数的返回值。
在try-catch-finally的复合语句中,如果try中的语句抛出异常,则会直接跳转到相应异常的catch语句中去。无论try中的语句有没有抛出异常,在执行完try或catch中的所有语句后,总会继续执行finally中的语句。
所以,当try中的语句没有任何异常时,其中最后一句return true;语句就会使函数返回true。而如果有异常抛出,则会跳转到相应异常的catch语句中去,从而把try中的return true;给跳过了,这样在执行完finally以后,函数体的最后一个return false;语句被执行,使函数返回false。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。