You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何代码中System.exit(0)未终止程序,catch与finally块仍执行?

问题原因解析

核心原因很直白:System.exit(0);这行代码根本没被执行到。

代码是按顺序逐行执行的,try块里先执行强制类型转换语句:

fruit fr = (fruit) p;

如果变量p的实际类型不是fruit(也不是它的子类),这一步会直接抛出ClassCastException(属于Exception的子类),程序会立刻跳转到catch块,执行System.out.println("not the right object");。

等catch块执行完毕,不管try/catch的执行结果如何,finally块必然会被执行,所以会输出finablock。

而System.exit(0);排在类型转换语句之后,因为前面已经抛出异常跳转走了,这行代码从来没机会运行,自然不会触发程序终止。


内容的提问来源于stack exchange,提问作者Martien ANGEL

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 04:55:45