За последние 24 часа нас посетили 18454 программиста и 1798 роботов. Сейчас ищут 846 программистов ...

Связь оператора @ c Exceptions

Тема в разделе "PHP для новичков", создана пользователем Ruzzz, 15 апр 2008.

  1. Ruzzz

    Ruzzz Активный пользователь

    С нами с:
    11 фев 2008
    Сообщения:
    148
    Симпатии:
    1
    Прошу вашей помощи! Перед тем как задавать вопрос прочитал:

    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:
    1. <?
    2. include_once "configDB.php";
    3. $dbcnx = @mysql_connect($dbhost, $dbuser, $dbpasswd);
    4. if (!$dbcnx) {
    5.     throw new Exception('В настоящий момент сервер БД не доступен.');
    6. } elseif (!@mysql_select_db($dbname, $dbcnx)) {
    7.     throw new Exception('В настоящий момент БД не доступна.');
    8. } elseif (!mysql_query("SET NAMES 'utf8'")) {
    9.     throw new Exception('Ошибка установки связи с БД в UTF8.');
    10. };
    11. ?>
    Может в этом примере убрать @ и тогда не нужно будет throw new Exception? будет ли mysql_connect вызывать какой-либо Exception, если он будет без @? Т.е. я хочу спросить - код выше не является избыточным? может можно так:
    PHP:
    1. <?
    2. include_once "configDB.php";
    3. $dbcnx = mysql_connect($dbhost, $dbuser, $dbpasswd);
    4. mysql_select_db($dbname, $dbcnx);
    5. if (!mysql_query("SET NAMES 'utf8'")) {
    6.     throw new Exception('Ошибка установки связи с БД в UTF8.');
    7. };
    8. ?>
    Или все же нельзя? механизм вывода ошибок, которые подавляет оператор @ не связан с Exceptions?
     
  2. Sergey89

    Sergey89 Активный пользователь

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    Здесь собака нужна для того, чтобы подавить стандартный вывод ошибок на экран и сгенерировать вместо него исключение, которое затем можно перехватить.
     
  3. Ruzzz

    Ruzzz Активный пользователь

    С нами с:
    11 фев 2008
    Сообщения:
    148
    Симпатии:
    1
    ага, все понял, теперь не сомниваюсь )
    значить первый код правильный
     
  4. Ti

    Ti Активный пользователь

    С нами с:
    3 июл 2006
    Сообщения:
    2.378
    Симпатии:
    1
    Адрес:
    d1.ru, Екатеринбург
  5. Ruzzz

    Ruzzz Активный пользователь

    С нами с:
    11 фев 2008
    Сообщения:
    148
    Симпатии:
    1
    Ti Вам спасибо! и за пост и за ссылку на него!