Основным преимуществом исключений является поведение "petite mort", локального die()
внутри try{}
блока, препятствующего дальнейшему выполнению кода.
Хотя это довольно удобно при обработке ошибок приложения, оно не очень хорошо подходит для проверки правильности ввода данных пользователем. Если пользователь сделал 3 ошибки при заполнении формы, было бы милостиво показать их сразу, а не одну за другой.
Вам скорее нужен шаблон POST / Redirect / GET для обработки пользовательских ошибок:
<?
if ($_SERVER['REQUEST_METHOD']=='POST') {
$err = array();
//performing all validations and raising corresponding errors
if (empty($_POST['name']) $err[] = "Username field is required";
if (empty($_POST['text']) $err[] = "Comments field is required";
if (!$err) {
//if no errors - saving data and redirect
header("Location: ".$_SERVER['PHP_SELF']);
exit;
} else {
// all field values should be escaped according to HTML standard
foreach ($_POST as $key => $val) {
$form[$key] = htmlspecialchars($val);
}
} else {
$form['name'] = $form['comments'] = '';
}
include 'form.tpl.php';
?>