Чи дійсно треба нарешті заблокувати без спроби і зловити?

Я намагаюсь використовувати остаточний блок, не використовуючи блоки try/catch, але отримуючи помилку в Eclipse.

Чи можу я використовувати остаточний блок без використання блоків try/catch?

14
Навіть якщо ви могли б поставити end без try , як би ви хотіли, щоб ваш , нарешті, поводився, якщо ви використовуєте goto , щоб пропустити виписку finally ? , нарешті, стосується лише коду, який позначено як відповідний з використанням заяви try . Інакше поведінка буде дуже дратує.
додано Автор CodeCamper, джерело
Ви маєте на увазі те, що використовується у випадку спроби з підсумком, з використанням блокування лову? Я думаю, ви не можете використовувати тільки "нарешті". це має бути з деяким блоком спроб.
додано Автор user1923551, джерело

10 Відповіді

finally should have atleast a try block, catch is optional. The point of finally blocks is to make sure stuff gets cleaned up whether an exception is thrown or not. As per the JLS

Остаточне положення гарантує, що завершальний блок виконується після блоку спроб і будь-якого блоку виявлення , який може бути виконаний, незалежно від того, як контроль залишає блок спроб або блокування.

Тому end завжди має передувати блок try .

13
додано

Вам потрібно мати блок try з блоком finally . Блок try визначає, за якими рядками коду буде код finally . Якщо до блокування try виключено виключення, код finally не буде виконуватися.

Додавання блоків catch необов'язкове.

try {

 //something

} finally {
 //guaranteed to run if execution enters the try block
}
5
додано
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
}
3
додано
ви повинні додати пояснення
додано Автор Zelldon, джерело

Остаточний блок завжди виконується, коли блок try завершує роботу. Таким чином, ви можете використовувати нарешті без лову, але ви повинні використовувати спробу.

Щоб отримати докладнішу інформацію, перегляньте doc тут

1
додано

Причина, чому ви не можете мати , нарешті без try , тому що ви могли мати декілька тверджень , нарешті в одному і тому ж Обсяг і try вказує, який блок коду відноситься до , нарешті, у випадку виникнення помилки.

Ще одна цікава особливість finally полягає в тому, що вона повинна виконуватись незалежно від того, що коли вводиться try . Наприклад, що, якщо ви використовуєте gooto , щоб пропустити твердження finally ? Якщо goto знаходиться всередині try , він виконає виписку final , однак, якщо goto знаходиться вище/за межами try , то він пропустить код finally . , нарешті, стосується лише коду, оточеного в try . Якщо у вас немає спроб, то finally не стосується нічого.

1
додано
  • Використання лише блоку спроб невірно.
  • Спробуйте блок можна використовувати лише з одним блоком від зловити або, нарешті, блок
  • Ви можете використовувати пробний блок з уловлюванням і остаточно. Якщо ви використовуєте остаточно блок з блоком "спроба", тоді блок "ловити" стає необов'язковим.
1
додано

Код в блоці finally гарантується, якщо блок потоку керування програмою входить до відповідного блоку try . Тому не має сенсу мати end без try .

Єдиним винятком є ​​це, якщо програма стикається з викликом System.exit (...) перед блоком end , оскільки це вимикає віртуальну машину.

0
додано

Ніхто не може

you can use Try-catch-finally або try-finally

 try {

    }catch (Exception e){

    }
    finally{

    }

або

try {

    }
    finally{

    }
0
додано

З траси Oracle:

Остаточний блок завжди виконується, коли вийшов блок спробувати. Це   забезпечує виконання остаточного блоку, навіть якщо це несподівано   виняток стає.

З вищенаведеної заяви ви не можете остаточно блокувати самостійно. Нижче наведено дозволені комбінації.

  1. спробуйте        улов             нарешті,

  2. спробуйте         ловити

  3. спробуйте            нарешті,

0
додано
  • Заява про спробу повинна мати або блок вилучення, або, нарешті, заблокувати це може мати обидва блоки.

  • Ми не можемо писати будь-який код між блоком try-catch-finally.

  • Ми не можемо отримати виправлення або остаточне положення без заяви про спробу.

  • Ми можемо мати декілька блоків вилучення з єдиною спробою statement.try-catch блоків можуть бути вкладені аналогічними операторам if-else.

  • Ми можемо мати лише один остаточний блок із записом try-catch.

0
додано
ІТ КПІ - Java
ІТ КПІ - Java
436 учасників