В ситуациях, когда обработка ошибок одинакова (я повторяю ошибку и передаю данные $_POST
обратно в форму), есть ли причина разделять код на несколько блоков try-catch? У меня есть команда get
, которая может завершиться ошибкой, если был передан неверный идентификатор; У меня есть сеттеры, которые не работают, если запись не проверяется; и у меня есть write
, который завершается ошибкой, если не удается записать в базу данных или произошла поздняя проверка. Предположим, что на этой странице все исключения приводят к тому, что пользователю отображается одно и то же уведомление (конечно, с помощью $e->getMessage()
). Так что, кажется, лучше пойти с ...
// Try the whole block
try {
$var = $manager->get($id);
$var->setFoo('bar');
$var->setShazbot('fnord');
$manager->write($var);
}
catch (DataException $e) {
echo $e->getMessage();
}
catch (ValidationException $e) {
echo $e->getMessage();
}
или ...
// Try getting
try {
$var = $manager->get($id);
}
catch (DataException $e) {
echo $e->getMessage();
}
// Try setting
try {
$var->setFoo('bar');
$var->setShazbot('fnord');
}
catch (ValidationException $e) {
echo $e->getMessage();
}
// Try committing
try {
$manager->write($var);
}
catch (DataException $e) {
echo $e->getMessage();
}
Теперь, имейте в виду, опять же, что в этом примере все три блока catch делают одно и то же . Тем не менее, получение, проверка и запись - три разные вещи, и я подумал, что было бы более разумно попытаться поймать их по отдельности, а не все сразу. Что имеет больше смысла?