发帖    主题    评论    推荐    标签    作者    订阅    查搜    注册   登陆   关注
 
面向对象 设计模式 领域驱动设计 企业架构 框架 开发教程 微服务 CQRS 扩展性 并发编程 事件溯源 分布式 SOA

try-catch-finally有返回值的问题

2007-08-05 20:00
赞助商链接

try-catch-finally有返回值的问题


一个方法有返回值
public EJBReturn execute(...){
try{

..........

return EJBReturn.doReturn(....);


}catch(Exception e){

}finally{

return EJBReturn.doReturn(....);

}
}

问题:

1. 为什么 try,finally块里面都必须有return,
EclipseIDE下提示 finally 块里面的 不正常。 this block not complete normally.

2. 去掉 finally块里面的 return, 后,这个提示没有了,但是会 编译错误,因为缺少return..

3. 事实上,这个方法的确return了两个次, 你可以通过在EJBReturn.doReturn(....); 方法里面 使用log看看轨迹。

请教 各位



2007-08-07 23:00

经师兄指点,问题解决了
原来有对finally理解不清楚的地方。

更改后结构为:

private EJBReturn exectue(...){

try{
//不需要return ;
//如果逻辑上需要中止流程,要return.
}catch(Exception e){
//不需要return
//如果逻辑上需要中止流程,要return;
}finally{
//不需要return
}

。。。。。// 在没有return的情况下,此代码仍旧执行。
return EJBReturn.doReturn(...); //最后一行代码
}

但这是否意味着,finally在 最后一行代码 执行完后 才执行?
还是确保,finally块一定会执行?
通过测试发现, finally是确保一定在方法返回前执行,
而不是确保一定在 方法的某个代码之前执行。


finally里面要避免Exception发生,否则finally也运行不完了。

赞助商链接

赞助商链接

返回顶部

移动版 关于本站 使用帮助 联系管理员 最佳分辨率1366x768
OpenSource JIVEJDON Powered by JdonFramework Code © 2002-20 jdon.com