因此,我只是在学习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
。