如果我有以下代码:
try {
Entity questionEntity = datastore.get(currentKey);
questionEntity.doSomething();
} catch (EntityNotFoundException e) {
Entity questionEntity = new Entity(currentKey);
}
datastore.get()
函数抛出异常的地方,是否会执行try块中的以下代码行(questionEntity.doSomething();
)?
答案 0 :(得分:11)
不,如果questionEntity.doSomething();
引发异常,则datastore.get(currentKey);
将不会被执行,这很容易验证,并且可能会花费更少的时间自己尝试而不是发布问题在SO。
答案 1 :(得分:7)
不,如果get
抛出异常,控件会将 传递给所示的catch块(如果异常是EntityNotFoundException
)或更高的堆栈。它不会继续下一行。
例外的一部分是避免代码继续尝试工作,就好像出现问题时没有发生任何事情。如果数据获取失败,这可以避免(比方说)用损坏或不完整的数据覆盖好的数据。
答案 2 :(得分:2)
没有
如果有任何其他异常,则会抛出异常调用代码。
如果必须执行代码,请考虑finally子句。 (在这种情况下,这不起作用,因为这是实体初始化的唯一地方
答案 3 :(得分:2)
不,不会。代码将在异常后立即继续执行catch块。异常后跳过所有代码。
答案 4 :(得分:1)
不 - 它会立即跳转到:
Entity questionEntity = new Entity(currentKey);
...在你的{}栏中。