Nirva
Правильно – этот пример выдумка. Согласить, что все над чем ты работаешь (и это касается не только программирования) требует обдумывания. И все твои решения являются твоей выдумкой. Именно поэтому в программировании одну и туже задачу два разработчика решат по разному. И именно поэтому такое отношение к finally в исключениях – кому-то такая обработка нужна, а кому-то нет.
Ниже привожу несколько "выдумок" по поводу использования finally.
PHP:
protected function release() {
try { parent::release(); } catch (Exception $e) { }
$this->visible_count = NULL;
$this->position->enabled = false;
if (isset($e)) throw new Exception($e->getMessage(););
}
...
PHP:
try {
if (is_null($count = $this->get_count()))
throw new Exception("Ошибка определения количества строк сетки");
for ($index = 1; $index <= $count; $index++) {
$this->position->value = $index;
$this->do_update();
}
} catch (Exception $e) { }
$this->position->enabled = false;
if (isset($e)) throw new Exception($e->getMessage());
...
PHP:
protected function top() {
echo "<tr><td>";
try { $this->do_top(); } catch (Exception $e) { }
if (isset($e)) $this->message_error($e->getMessage());
echo "</td></tr>";
}
...
PHP:
protected function bottom() {
echo "<tr><td>";
try { $this->do_bottom(); } catch (Exception $e) { }
if (isset($e)) $this->message_error($e->getMessage());
echo "</td></tr>";
}
Между прочим, если присмотреться, то не в одной из этих выдумок finally нет. Но это не потому что он там не нужен, а потому что в языке он не предусмотрен.
Кстати по поводу исключений в PHP в принципе. Попробуйте выполнить вот эти два примера:
PHP:
try {
throw new Exception("Исколючение");
} catch (Exception $e) { }
PHP:
try {
throw new Exception("Исколючение");
} catch (Exception $e);
В PHP 5.0.5 второй пример вообще не выполняется.
Но я думаю что это не ошибка, а недоработка. Исключение в языке вещь новая и поэтому будет развиваться. И возможно появление finally не за горами.
На этом думаю тему можно закрывать. Во всяком случае я ответ на свой вопрос "кто и как обходиться без finally" получил.
-~{}~ 28.11.05 09:53:
Всем спасибо.