try-finally
4 июня 2018
Try без catch может быть полезным, если ошибку мы ловить именно в этом методе не хотим, но завершение нам нужно как-то обработать вне зависимости, была ошибка или нет.
$this->openConnection();
try {
$this->doSomethingUnstable();
} finally {
$this->closeConnection();
}
Почему-то подобный код я не особо часто встречал, хотя catch без обработки — постоянно.
Комментарии RSS по email OK
В PHP не сильно принято освобождать ресурсы. Видимо расчет на GC и жизненный цикл процесса на время обработки реквеста. Я в прошлом программил на Delphi, и там это был очень распространенный кейс. В интерпретации PHP:
Да, в php нет большой необходимости так как он создан, чтобы умирать.
Необходимость есть, и в некоторых случаях это очень удобно. Поставить/снять блокировку, создать/удалить временный файл, и прочее.
Ну как бы я написал "нет БОЛЬШОЙ необходимости" Ваши случаи можно решить разными способами, к примеру destructor или явно вызвать метод.
Причем тут деструктор? Речь про блоки кода, где нужно гарантировать финализацию. До 5.5, где появился finally, подобные вещи приходилось костылить другими способами, типа:
Но с finally это выглядит лучше:
Сам сейчас прочел свое сообщение и понял что ступил, видимо недосып сыграл. Да, вы правы