读书人

关于finally的有关问题

发布时间: 2012-01-09 21:05:42 作者: rapoo

关于finally的问题!
我用eclipse写了一段程序,但eclipse给我了一段警告:finally block does not complete normally


try {
//  try 块里主要是写读文件,当遇到一些错误时,设置isError标志位,并抛出异常

} catch (EOFException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (SecurityException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
dis.close();
is.close();
alermSchedule.close();

} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();


} finally {
if ( isError || !fileExists ) {
return null;
} else {
return timeVector;
}
}
}


但我如果要是写成以下形式,就没有警告,


try {


} catch (EOFException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (SecurityException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {


dis.close();
is.close();
alermSchedule.close();

} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if ( isError || !fileExists ) {
return null;
} else {
return timeVector;
}


我主要想知道这个警告是如何产生的?为什么出会出现这样的警告?
谢谢大家了。

[解决办法]
应该是正常的提示吧
[解决办法]
The classic use for finally is to clean up resources.
Do not return from finally directly.
[解决办法]
ls的顶一个不能再finally直接返回
[解决办法]
finally中不推荐使用 continue,break,return等可以直接跳出的关键词,正如楼上所说的,finally主要做的是清楚资源。

读书人网 >J2SE开发

热点推荐