Разбираюсь с исключениями.
Ситуация: имеем класс User(код ниже). В процессе создания объекта может быть не задано имя, логин, пароль или все вместе.
Задача: обработать отдельно отсутствие каждого из обязательных для инициализации полей объекта параметров, т.е. обработать одновременно несколько исключений в одном блоке try..catch(возможно сумбурно изъясняюсь, сорри).
Недолго думая соорудил нижеследующий код:
class User {
private $name;
private $login;
private $password;
function __construct($name = "", $login = "", $password = "") {
try {
if ($name == "") $inputs[] = " имя!";
if ($login == "")$inputs[] = " логин!";
if ($password == "") $inputs[] = " пароль!";
if(isset($inputs)) throw new loginException($inputs);
$this->name = $name;
$this->login = $login;
$this->password = $password;
} catch (loginException $e) {
echo $e->getMessage();
}
}
…………….
class loginException extends Exception {
function __construct($inputs) {
foreach ($inputs as $value)
$msg .= "Введите $value<br>";
parent::__construct($msg);
}
}
Нутром, чую, то это реальный гавнокод, за сим интересует, как правильно/грамотно/не гавнокодя обработать несколько разнородных исключений в одном месте программы?