Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Ошибки и исключения в PHP

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Опрос
Что Вы используете для отлова ошибок/исключений в скрипте?
Для голосования и просмотра результатов опроса войдите или зарегистрируйтесь

> Описание: В чем разница между ошибками и исключениями в PHP?
Ja_kazanova
Отправлено: 23 Июня, 2013 - 16:41:17
Post Id



Новичок


Покинул форум
Сообщений всего: 15
Дата рег-ции: Апр. 2013  


Помог: 0 раз(а)




Доброго времени суток, уважаемые форумчане.
У меня внезапно возник вопрос. В чем заключается разница между исключениями и ошибками в PHP? И актуально ли будет использовать блок
Try && catch если уже определён set_error_handler?
Товарищи, возможно у кого-то имеется литература с подробнейшим описанием данной темы – поделитесь со мной. За ранее благодарен Вам, дорогие друзья. Огромное Вам человеческое спасибо)
P.S.
Чтобы не создавать отдельную тему, киньте ссылку на описание с подробными (разжеванными) примерами по использованию встроенных функций PHP bbcode)
 
 Top
caballero
Отправлено: 23 Июня, 2013 - 17:05:54
Post Id


Активный участник


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


Помог: 126 раз(а)




вообще то встроенные функции PHP в большинстве своем исключений не выбрасывают


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
Ja_kazanova
Отправлено: 23 Июня, 2013 - 17:30:12
Post Id



Новичок


Покинул форум
Сообщений всего: 15
Дата рег-ции: Апр. 2013  


Помог: 0 раз(а)




Меня интересует, если в движке в целом определён пользовательский обработчик ошибок то, не является ли блок try/catch исполняемого класса рудиментом как, таковой? И отлавливает ли error_trigger все ошибки скрипта или это такая себе альтернатива throw new Exception? И в случае если задача обеих обработчиков аналогична то, какой из них по Вашему лучше использовать?
 
 Top
DelphinPRO
Отправлено: 23 Июня, 2013 - 17:52:35
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




у ошибок и исключений разное назначение, хоть и выглядит что они работают одинаково (в глазах новичков). Думаю вам стоит подтянуть свои знания в области исключений.

Я задавал подобный вопрос год назад

(Отредактировано автором: 23 Июня, 2013 - 17:54:17)



-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
Ja_kazanova
Отправлено: 23 Июня, 2013 - 18:50:55
Post Id



Новичок


Покинул форум
Сообщений всего: 15
Дата рег-ции: Апр. 2013  


Помог: 0 раз(а)




DelphinPRO пишет:
у ошибок и исключений разное назначение, хоть и выглядит что они работают одинаково (в глазах новичков). Думаю вам стоит подтянуть свои знания в области исключений.

Я задавал подобный вопрос год назад

Видимо или я не так спросил, или Вы меня не так поняли. Вопрос в эффективности.
Как Вы считаете, лучше использовать
PHP:
скопировать код в буфер обмена
  1.  
  2. try
  3.         {
  4.                 if($this -> db = parent::__construct($db_host, $db_user, $db_pass))
  5.                 {
  6.                         if($this -> db -> select_db($db_name))
  7.                          $this -> db -> query("SET NAMES UTF8");
  8.                         else throw new exception("#{$db -> errno}: {$db -> error}");
  9.                 }
  10.                 else throw new exception('#'.mysqli_connect_errno().': '.mysqli_connect_error());
  11.         }
  12.         catch(exception $a)
  13.         {
  14.                 mail('Май мылко', ..., ..., ...);
  15.                 exit("Извините, сервис временно не доступен!");
  16.         }
  17.  
  18.  

или
PHP:
скопировать код в буфер обмена
  1.  
  2.         if($this -> db = parent::__construct($db_host, $db_user, $db_pass))
  3.         {
  4.                 if($this -> db -> select_db($db_name))
  5.                  $this -> db -> query("SET NAMES UTF8");
  6.                 else trigger_error("#{$db -> errno}: {$db -> error}", E_USER_ERROR);
  7.         }
  8.         else trigger_error('#'.mysqli_connect_errno().': '.mysqli_connect_error(), E_USER_ERROR);
  9.  
  10.  
 
 Top
DelphinPRO
Отправлено: 23 Июня, 2013 - 19:29:43
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




в try удобно заворачивать самый верхний уровень приложения. и уже там обрабатывать исключения. Если где глубже не получилось соединитсья с БД (или еще что-то критическое) то скрипт прервется, исключение дойдет до верхнего catch где можно будет покажать пользователю адекватную страницу с извинениями


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB