Java中main方法能否被调用_在Java中,“ finally”块是否可以保证被调用(在main方法中)?...

我是Java新手,我想知道我是否具有以下典型的Java代码

public class MyApp {

public static void main(String[] args) {

try {

// do stuff

} catch {

// handle errors

} finally {

// clean up connections etc.

}

}

}

JVM是否保证将始终运行finally块?为了了解我的来历,我已经习惯了C / C

++程序,如果您取消引用NULL指针,并且之后没有任何代码可以运行,它们可能会崩溃。

但是,据我了解Java和整个GC

/托管内存业务的一般情况,没有诸如空指针取消引用之类的东西,所有这些都是可捕获的期望,因此,我的程序实际上没有崩溃的方法可能导致其跳过最后,或者在那里?例如,在Python中,我通常会

try:

# do stuff

except AnExceptionIKnewMightHappen:

# react in an appropriate way

except:

# log that weird error I had not known could happen

而且我从来没有任何应用程序不通过我的代码就死掉。

当然,如果操作系统由于某种原因导致进程终止(或者某些事物导致整个系统中断,例如拔掉插头),那么Java便无能为力。另外,从PHP中,我知道无法阻止的不可捕获错误,即使解释器发生后仍然存在(至少它能够输出正确的消息)。

编辑: 为清楚起见(没有被任何人误解),让我补充一点,我正在 代码

中寻找可能导致最终被绕过的东西。因此,指向System.exit是一个有用的提醒,即使我看不到为什么要这样做。

JVM退出是一种非常明显的方式,我认为这是外部原因。该说明指出,您还必须记住在JVM和应用程序保持运行时退出线程的可能性非常有帮助,因为即使现在看来对我来说也很明显,但我没有想到这一点。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值