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 :: Exception - Что не так?

 PHP.SU

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


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

> Без описания
dubasua
Отправлено: 01 Марта, 2013 - 13:35:58
Post Id



Посетитель


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


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




Вот в первый раз начал использовать исключения. Вот код
PHP:
скопировать код в буфер обмена
  1.  try {
  2.         $object = new myClass;
  3.         $object->myMethod($param);
  4. } catch (Exception $e) {
  5.                 die();
  6. }

Вот если к примеру нет класса myClass, то все должно умереть, но нет, ошибка "Fatal error: Class 'myClass' not found in...." Что не так? Если оборачиваю в if то все работает

(Отредактировано автором: 01 Марта, 2013 - 13:36:26)

 
 Top
DeepVarvar Супермодератор
Отправлено: 01 Марта, 2013 - 13:39:56
Post Id



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


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


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




Э нее, батенька, так вообще не делают..
Эксепшн ты вызываешь сам.
А если надо атоматический перехват ошибок интерпретатора, тогда юзай чонить типа set_error_handler и вот в нем уже вешай свои кастомные эксепшны.
 
 Top
dubasua
Отправлено: 01 Марта, 2013 - 13:45:20
Post Id



Посетитель


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


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




Это как бы установить правило?. При возникновении ошибки например типа Fatal, сделать то то...? Или я не так понял? Я хочу уйти от оборачивание в if else...
 
 Top
DeepVarvar Супермодератор
Отправлено: 01 Марта, 2013 - 13:46:57
Post Id



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


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


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




set_error_handler
(Добавление)
dubasua пишет:
Я хочу уйти от оборачивание в if else...
От судьбы не уйдешь Хорошо
 
 Top
dubasua
Отправлено: 01 Марта, 2013 - 13:47:53
Post Id



Посетитель


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


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




Ага, уже нашел, спасибо....
 
 Top
OrmaJever Модератор
Отправлено: 01 Марта, 2013 - 15:49:44
Post Id



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


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


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




А вот хорошая идея, Исключения уже во всю используются, и почему бы на любую ошибку не кидать сперва исключение?
Ну вот например нету такого класса то интерпретатор кидает исключение, а если нету блока catch под него то затем fatal, или если не существует переменой то вначале исключение, а затем только нотис.


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
esterio
Отправлено: 01 Марта, 2013 - 16:35:40
Post Id



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


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


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




PHP:
скопировать код в буфер обмена
  1. ini_set('display_errors', 'Off');
  2.  
  3. function exception_error_handler($errno, $errstr, $errfile, $errline ) {
  4.         throw new ErrorException($errstr, 0, $errno, $errfile, $errline);
  5. }
  6. set_error_handler("exception_error_handler");
  7.  
  8. function exception_handler($exception) {
  9.         echo "Неперехватываемое исключение: " , $exception->getMessage(), "\n";
  10. }
  11. set_exception_handler('exception_handler');
  12.  
  13.  

(Отредактировано автором: 01 Марта, 2013 - 16:44:16)

 
 Top
fawkes
Отправлено: 09 Марта, 2013 - 13:32:44
Post Id


Новичок


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


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




PHP:
скопировать код в буфер обмена
  1.  
  2.  try {
  3.         if (!$object = new myClass)
  4.                  throw new Exception('ошибка');
  5. } catch (Exception $e) {
  6.        echo $e->__toString();
  7. }

(Отредактировано автором: 18 Марта, 2013 - 08:01:46)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Объектно-ориентированное программирование »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB