Прошу вашей помощи! Перед тем как задавать вопрос прочитал: http://php.ru/manual/language.exceptions.html http://php.ru/manual/language.operators ... ntrol.html http://php.ru/manual/ref.errorfunc.html Но связь оператора @ c Exceptions никак не найду. Это два разных механизма? Вот например: PHP: <? include_once "configDB.php"; $dbcnx = @mysql_connect($dbhost, $dbuser, $dbpasswd); if (!$dbcnx) { throw new Exception('В настоящий момент сервер БД не доступен.'); } elseif (!@mysql_select_db($dbname, $dbcnx)) { throw new Exception('В настоящий момент БД не доступна.'); } elseif (!mysql_query("SET NAMES 'utf8'")) { throw new Exception('Ошибка установки связи с БД в UTF8.'); }; ?> Может в этом примере убрать @ и тогда не нужно будет throw new Exception? будет ли mysql_connect вызывать какой-либо Exception, если он будет без @? Т.е. я хочу спросить - код выше не является избыточным? может можно так: PHP: <? include_once "configDB.php"; $dbcnx = mysql_connect($dbhost, $dbuser, $dbpasswd); mysql_select_db($dbname, $dbcnx); if (!mysql_query("SET NAMES 'utf8'")) { throw new Exception('Ошибка установки связи с БД в UTF8.'); }; ?> Или все же нельзя? механизм вывода ошибок, которые подавляет оператор @ не связан с Exceptions?
Здесь собака нужна для того, чтобы подавить стандартный вывод ошибок на экран и сгенерировать вместо него исключение, которое затем можно перехватить.