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]   

> Описание: ваше мнение
and_07
Отправлено: 22 Мая, 2014 - 17:53:57
Post Id


Гость


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


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




набросал пару строк
хотел бы услышать
это нормально))
PHP:
скопировать код в буфер обмена
  1.  
  2. ....
  3.                 try{
  4.                         for($i=0; $i < count($out); $i++){
  5.                                 $obj = $out[$i];
  6.                                
  7.                                 ...
  8.  
  9.                                 $id = (int)$obj['id'];
  10.                                 $test= new TestDB($id);
  11.                                  
  12.                                 ...  
  13.                                 //много всего вызов разных методов
  14.                                ...
  15.  
  16.                         }
  17.                 }catch(Exception $e){
  18.                         if(isset($test)){
  19.                                 $test->update(array('status' => -1,'date_update' => 'now()','error' => $e->getMessage()));
  20.                         }
  21.                         echo $e->getMessage();
  22.                 }
  23. .....
  24.  
  25.  
 
 Top
Мелкий Супермодератор
Отправлено: 22 Мая, 2014 - 18:25:18
Post Id



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


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


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




Why not?
Если надо прерывать цикл при ошибке, а не игнорировать этот элемент и продолжать дальше - то так и пишется.

Только нафига делать свой foreach?


-----
PostgreSQL DBA
 
 Top
and_07
Отправлено: 22 Мая, 2014 - 19:16:10
Post Id


Гость


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


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




те
если в try создать объект а в catch вызвать метод объекта
то эт нормально?
(Добавление)
Мелкий пишет:
Только нафига делать свой foreach?

ну дело привычки производительность в данном примере не критична
 
 Top
Мелкий Супермодератор
Отправлено: 22 Мая, 2014 - 19:57:01
Post Id



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


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


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




and_07 пишет:
если в try создать объект а в catch вызвать метод объекта
то эт нормально?

Если вы понимаете, что у вас будет в $test. Там может быть объект с предыдущей итерации - если исключение выбросит конструктор, например.

Более явный вариант:
PHP:
скопировать код в буфер обмена
  1. try{
  2.         for($i=0; $i < count($out); $i++){
  3.                 $obj = $out[$i];
  4.                
  5.                 $id = (int)$obj['id'];
  6.                 $test= new TestDB($id);
  7.                 try {
  8.                         // всякий код, опирающийся на $test
  9.                 } catch (exception $e) {
  10.                         $test->update(array('status' => -1,'date_update' => 'now()','error' => $e->getMessage()));
  11.                         throw $e;
  12.                         }
  13.         }
  14. }catch(Exception $e){
  15.                 echo $e->getMessage();
  16.         }
  17.  


-----
PostgreSQL DBA
 
 Top
and_07
Отправлено: 22 Мая, 2014 - 20:30:30
Post Id


Гость


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


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




Мелкий
ваш вариант мне больше нравится
более правильный и логичный

P.S. хотя try ... catch внутри цикла то же странно видеть

(Отредактировано автором: 22 Мая, 2014 - 20:34:06)

 
 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