尝试在java中捕获

Jon*_*an. -2 java exception

如果我有以下代码:

try {
    Entity questionEntity = datastore.get(currentKey); 
    questionEntity.doSomething();
} catch (EntityNotFoundException e) {
    Entity questionEntity = new Entity(currentKey);
}
Run Code Online (Sandbox Code Playgroud)

datastore.get()函数抛出一个异常,将代码(以下行questionEntity.doSomething();)在try块被执行?

Dar*_*rov 11

不会,questionEntity.doSomething();如果datastore.get(currentKey);抛出异常将不会执行,这很容易验证,并且可能会花费你更少的时间自己尝试,而不是在SO上发布问题.


Jon*_*eet 7

否,如果get抛出异常,控制将转移要么于所示的catch块(如果异常是EntityNotFoundException)或更高的堆栈否则.它不会继续下一行.

部分例外情况是避免代码继续尝试工作,就好像出现问题时没有发生任何事情.如果数据获取失败,这可以避免(比方说)用损坏或不完整的数据覆盖好的数据.