尝试在java中捕获

时间:2011-07-05 18:45:27

标签: java exception

如果我有以下代码:

try {
    Entity questionEntity = datastore.get(currentKey); 
    questionEntity.doSomething();
} catch (EntityNotFoundException e) {
    Entity questionEntity = new Entity(currentKey);
}

datastore.get()函数抛出异常的地方,是否会执行try块中的以下代码行(questionEntity.doSomething();)?

5 个答案:

答案 0 :(得分:11)

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

答案 1 :(得分:7)

不,如果get抛出异常,控件会将 传递给所示的catch块(如果异常是EntityNotFoundException)或更高的堆栈。它不会继续下一行。

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

答案 2 :(得分:2)

没有

  1. 如果EntityNotFoundException,将执行catch
  2. 如果有任何其他异常,则会抛出异常调用代码。

  3. 如果必须执行代码,请考虑finally子句。 (在这种情况下,这不起作用,因为这是实体初始化的唯一地方

答案 3 :(得分:2)

不,不会。代码将在异常后立即继续执行catch块。异常后跳过所有代码。

答案 4 :(得分:1)

不 - 它会立即跳转到:

Entity questionEntity = new Entity(currentKey);

...在你的{}栏中。