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.SU

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


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

> Без описания
ams
Отправлено: 21 Мая, 2012 - 08:53:34
Post Id



Посетитель


Покинул форум
Сообщений всего: 351
Дата рег-ции: Нояб. 2010  


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




Нормально ли такое делать или слишком уж много "выбросить" исп. ? Улыбка

Например:

PHP:
скопировать код в буфер обмена
  1.  
  2. class A {
  3.   ...
  4.   public function __construct($f) {
  5.      if ( ! file_exists($f))
  6.        throw new Exception('1231');
  7.      ...
  8.      if ( empty($a))
  9.        throw new Exception('1231');  
  10.   }
  11.  
  12. }
  13.  


Т.е. многовато проверок, и там выбрасывать исключения
 
 Top
EuGen Администратор
Отправлено: 21 Мая, 2012 - 08:55:08
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


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




ams
Зависит скорее от логики - если это два действительно разных случая и их нужно обработать, к примеру, разными обработчиками исключений - то вполне допустимо.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
OrmaJever Модератор
Отправлено: 21 Мая, 2012 - 09:11:43
Post Id



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


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


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




Исключения более полезны для предотвращения цепной реакции, например

PHP:
скопировать код в буфер обмена
  1. try {
  2.   if(!mysql_connect( ... )) throw new Exeption('connect error');
  3.   if(!mysql_select_db( ... )) throw new Exeption('select db error');
  4.   if(!mysql_query( ... )) throw new Exeption('query error');
  5. } catch( ... ) { ... }

Тоесть если происходит ошибка при подключении то остальные функции дальше не должны выполнятся полюбому, если при выборе бд то всё что после так же, а у вас судя по всему второе условие как-то не очень зависит от первого. Возможно вам нужен обычный return, хотя не зная полной картины могу и ошибатся.


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
ams
Отправлено: 21 Мая, 2012 - 14:26:55
Post Id



Посетитель


Покинул форум
Сообщений всего: 351
Дата рег-ции: Нояб. 2010  


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




Спасибо, разъяснили Улыбка
 
 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