Подтвердить что ты не робот

Действительно ли он окончательно блокируется без попытки и улова?

Я пытаюсь использовать блок finally без использования блоков try/catch, но получаю ошибку в Eclipse.

Можно ли использовать блок finally без использования блоков try/catch?

4b9b3361

Ответ 1

finally должен иметь по крайней мере блок try, catch не является обязательным. Пункт блоков finally состоит в том, чтобы убедиться, что материал очищается от того, выбрано ли исключение или нет. Согласно JLS

Предложение finally гарантирует, что блок finally будет выполнен после блока try и любого блока catch, который может быть выполнен, независимо от того, как элемент управления покидает блок try или catch.

Следовательно, a finally всегда должен предшествовать блок try.

Ответ 2

У вас должен быть блок try с блоком finally. Блок try определяет, какие строки кода будут сопровождаться кодом finally. Если перед блоком try выбрано исключение, код finally не будет выполняться.

Добавление блоков catch необязательно:

try {

  // something

} finally {
  // guaranteed to run if execution enters the try block
}

Ответ 3

try {
    // Block of code with multiple exit points
}
finally {
    // Block of code that must always be executed when the try block
    // is exited, no matter how the try block is exited
}

Ответ 4

Блок finally всегда выполняется, когда блок try завершается. Таким образом, вы можете использовать, наконец, без catch, но вы должны использовать try.

Подробнее... doc здесь

Ответ 5

Причина, по которой вы не можете иметь finally без try, потому что у вас может быть несколько операторов finally в той же области видимости, а try указывает, к какому блоку кода относится finally в случае возникает ошибка.

Еще одна интересная особенность finally заключается в том, что она должна выполняться независимо от того, когда вводится try. Например, что, если вы используете goto, чтобы пропустить инструкцию finally? Если goto находится внутри try, он будет выполнять оператор finally, однако, если goto находится выше/вне инструкции try, тогда он пропустит код finally. finally относится только к коду, который окружен в try. Если вы не пытаетесь, то finally не имеет отношения ни к чему.

Ответ 6

  • Использование только блока try неверно.
  • Блок try может использоваться только с одним блоком из catch или, наконец, блок.
  • Вы можете использовать блок try с catch и finally.If вы используете, наконец, блок с блоком try, тогда блок catch станет необязательным.

Ответ 7

Из Oracle Trails:

Блок finally всегда выполняется, когда блок try завершается. Эта гарантирует, что блок finally будет выполнен, даже если неожиданное исключение.

Из приведенного выше утверждения вы не можете окончательно блокировать себя самостоятельно. ниже приведены допустимые комбинации.

  • попробовать      поймать           наконец

  • попробовать       поймать

  • попробовать          наконец

Ответ 8

Код в блоке finally гарантированно выполнится, если поток управления программой входит в соответствующий блок try. Поэтому нет смысла иметь finally без try.

Единственное исключение: если программа встречает вызов System.exit(...) перед блоком finally, так как это завершает работу виртуальной машины.

Ответ 9

Нет, вы не можете

вы можете использовать Try-catch-finally или try-finally

 try {

    }catch (Exception e){

    }
    finally{

    }

или

try {

    }
    finally{

    }