带有finally()的执行代码顺序问题

Usher丶AckMan 2015-11-03 05:47:15

public class Test3 {
// yy
// bb
public String Test3() {

String str = "aa";
try {
str = "bb";
return str;

} finally {
str="yy";
System.out.println(str);

}
}

public static void main(String[] args) {
// TODO Auto-generated method stub
Test3 t = new Test3();

System.out.println(t.Test3());
}


这段代码的执行顺序是什么样的,输出是什么?Why
...全文
134 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Usher丶AckMan 2015-11-03
  • 打赏
  • 举报
回复
whzxcvbnm 2015-11-03
  • 打赏
  • 举报
回复
finally在return前执行,return 的值在执行finally前被存入栈中,所以在finally中改变对象后,不影响return的结果 我这样理解对不对?
少主无翼 2015-11-03
  • 打赏
  • 举报
回复
finally是必须执行的,而且是在return真正退出方法之前执行,也就是说先输出yy,然后再讲bb返回,打印
飏飏一蝶 2015-11-03
  • 打赏
  • 举报
回复
方法中依次执行,到return时由于有finally必须先执行, 所以return值被暂存,也就是bb被暂存 yy先被输出 然后bb返回被main里面输出
内容概要:本文介绍了如何利用 GitHub Copilot 辅助进行程序调试与 Bug 分析,强调 Copilot 不仅可用于代码生成,更是强大的代码分析与调试工具。文章详细阐述了 Copilot 在调试复杂问题、老旧项目维护和难以复现 Bug 场景下的优势,提出了“先分析、再修改”的四步流程:分析原因→评估风险→提出方案→修改代码,并推荐结合错误日志、用户操作等信息精准提问,提升 AI 回答质量。同时展示了如何通过 Copilot 增强调试能力,如自动加日志、异常保护、生成测试数据和性能分析。最后通过游戏拾取系统的实际案例,说明如何结构化描述问题以获得有效反馈。; 适合人群:具备一定开发经验,正在参与项目调试或维护工作的程序员,尤其是面对复杂逻辑、历史代码或难复现 Bug 的 1-3 年开发者;也适合希望提升 AI 协作能力的技术人员。; 使用场景及目标:①快速定位偶发性崩溃、数据异常等问题根源;②理解无文档或结构混乱的老代码模块;③优化调试流程,借助 AI 生成诊断建议、修复方案与测试用例;④构建更具健壮性的程序,提前发现潜在缺陷。; 阅读建议:学习者应结合自身项目中的真实问题,按照文中提供的结构化提问模板实践,逐步训练与 Copilot 的协作能力,重视问题描述的完整性与准确性,避免直接要求修改代码,优先通过分析提升对系统的理解。

67,535

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧