en.javascript.info/1-js/7-js-misc/5-exception/1-finally-or-code-after/task.md
2015-06-11 18:23:02 +03:00

1.2 KiB
Raw Blame History

Finally или просто код?

[importance 5]

Сравните два фрагмента кода.

  1. Первый использует `finally` для выполнения кода по выходу из `try..catch`:
    try {
      начать работу
      работать
    } catch (e) {
      обработать ошибку
    } finally {
    *!*
      финализация: завершить работу
    */!*
    }
    
  2. Второй фрагмент просто ставит очистку ресурсов за `try..catch`:
    try {
      начать работу
    } catch (e) {
      обработать ошибку
    }
    
    *!*
    финализация: завершить работу
    */!*
    

Нужно, чтобы код финализации всегда выполнялся при выходе из блока try..catch и, таким образом, заканчивал начатую работу. Имеет ли здесь finally какое-то преимущество или оба фрагмента работают одинаково?

Если имеет, то дайте пример когда код с finally работает верно, а без -- неверно.