因此,我只是在学习Java中的异常,我在看一个示例,但这要么错了,要么我仍然不理解。

这是代码:

command1;
try {
    command2;
    command3;
    try {
        command4;
        command5;
    } catch (MyException e) { command6; }
    command7;
} catch (IOException e) {
    command8;
} catch (OwnException e) {
    command9;
} finally {
    command10;
}
command11;


然后记下哪些命令将在不同的方案中运行,但是如果在command4期间发生MyException,则command7几乎永远不会运行,仅在一种方案中。

没错吗我只是在学习,所以这里我可能是错的,但是也有可能老师的笔记是错误的,这不是仅在command6之后的}在command7之后才是真的吗?因此,仅在这种情况下,command6和command7应该放在一个catch块中,以解释为什么从来没有执行过command7(而且我猜想,如果在command5期间发生MyException,它也会执行,但并不是在注释中显示了每种情况) 。

最佳答案

除非command7;command2;或潜在的command3;导致command6;IOException,否则OwnException应该每次都运行。显然,如果程序由于未处理的任何事情而崩溃,则command7;将不会运行,但除此之外,应该没有办法解决。如果command11;运行并且command8;command9;均未运行,则command7;应该已经运行。如果按照说明移动了括号,则command5;也可能触发运行6和7的MyException

10-06 15:28