public int getNum(){
try {
int a = 1/0;
return 1;
}catch (Exception e){
return 2;
}finally {
return 3;
}
}
- 在try中遇到异常,代码不会继续执行,会直接跳到catch语句中,
- 但是在异常机制中有这么一个原则,如果在catch中遇到了return或者异常等能使程序终止的语句,那么就先执行finally中的代码,然后再进行返回;
- 但是如果在finally块中又遇到了return或者异常等能使程序终止的语句,那么这个方法就结束了,catch中的return就无法真正被返回。
- 如果finally中仅仅处理了一个释放资源等操作的话,那么程序会返回去执行catch中的返回代码。
这篇博客探讨了Java异常处理机制,特别强调了在try-catch-finally结构中,如果try或catch块中存在return语句,而finally块中也有return,执行流程将如何。文章指出,即使在finally块中有return,也会先执行finally块的代码,但最终的返回值将由finally块的return决定,导致catch中的return无法真正生效。这在释放资源等关键操作时尤其重要,因为finally确保了资源的正确释放。
302

被折叠的 条评论
为什么被折叠?



