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 :: throw new Exception [2]

 PHP.SU

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


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

> Описание: зачем столько слови, или что еще можно бросать?
DelphinPRO
Отправлено: 09 Августа, 2012 - 22:30:30
Post Id



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


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


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




1. Бросить можно только объект исключения (Exception или наследник)
2. Бросить можно уже созданный объект, либо создать его прямо в конструкции throw

PHP:
скопировать код в буфер обмена
  1. $e = new Exception('msg');
  2. throw $e; // бросаем готовый объект. на практике получаем его из catch
  3.  
  4. throw new Exception('msg'); // Бросаем объект, предварительно создавая его.


никаких противоречий в синтаксисе не вижу.


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
Bio man
Отправлено: 09 Августа, 2012 - 23:47:21
Post Id


Постоянный участник


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


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




DlTA пишет:
возможно ошибка тут throw new Exception();
Нет.
OrmaJever пишет:
Что я делаю не так?
Уж тебе то не знать... throw $e; не перехватывается нигде.
 
 Top
Мелкий Супермодератор
Отправлено: 10 Августа, 2012 - 10:05:01
Post Id



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


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


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




OrmaJever пишет:
Что я делаю не так?

Вышестоящий try-то где? throw $e кидает исключение дальше. Если его больше никакой try не ловит - закономерный fatal error. См. пример Stierus.

PS: кстати, в PHP5.5 может появиться небесполезный finally Воздушный шарик


-----
PostgreSQL DBA
 
 Top
Stierus Супермодератор
Отправлено: 10 Августа, 2012 - 11:31:01
Post Id



Рекордсмен по количеству сообщений за 7 дней


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


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




Мелкий , finally - вещь полезная, но в кривых руках сильно опасная (поведение у нее не очевидное, а мануалы люди читать не любят)
 
My status
 Top
Мелкий Супермодератор
Отправлено: 10 Августа, 2012 - 11:45:15
Post Id



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


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


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





Stierus, в кривых руках у всего поведение не очевидное... У любых управляющих структур, включая break, continue, return.
А с поведением предпочту разбираться ближе к релизу, а то придумают опять что-нибудь странное в реализации. Наживую-то не сталкивался с finally, только впечатлился на саму возможность у Макконнелла.


-----
PostgreSQL DBA
 
 Top
EuGen Администратор
Отправлено: 10 Августа, 2012 - 11:54:35
Post Id


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


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


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




Наживую будет как и написали уже
PHP:
скопировать код в буфер обмена
  1. try
  2. {
  3.    return true;
  4. }
  5. finally
  6. {
  7.    return false;
  8. }

По поводу непонятности конструкции (по теме)- если честно, пока так и не понял, в чем трудность с тем, что при использовании исключений используется понятие "выбросить исключение", throw exception (возможно, просто не самый удачный перевод?)


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
DlTA
Отправлено: 10 Августа, 2012 - 19:17:21
Post Id



Постоянный участник


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


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




вопрос скорее возник из за того что я был не в курсе что можно было бросить пойманное исключение дальше.
 
 Top
Stierus Супермодератор
Отправлено: 10 Августа, 2012 - 19:50:19
Post Id



Рекордсмен по количеству сообщений за 7 дней


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


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




DlTA, у конструктора исключения есть третий параметр, довольно забавный Улыбка
 
My status
 Top
DlTA
Отправлено: 10 Августа, 2012 - 23:29:32
Post Id



Постоянный участник


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


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




это просто замечательно если не учитывать тот факт что в мане не описаны детали(
 
 Top
z1o
Отправлено: 19 Сентября, 2012 - 21:31:36
Post Id


Новичок


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


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




DlTA пишет:
это просто замечательно если не учитывать тот факт что в мане не описаны детали(

Можешь взять нормальную книгу по обработке исключений на с++, а на php там все аналогично (только в php чуть синтаксис не тот и возможностей меньше Радость )
 
 Top
DlTA
Отправлено: 19 Сентября, 2012 - 21:39:07
Post Id



Постоянный участник


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


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




z1o пишет:
Можешь взять нормальную книгу по обработке исключений на с++
о да, помню те времена когда я грыз с++, вот с тех самых у меня и возниклов отрицательное впечатление
а читал я тогда мсдн
 
 Top
Страниц (2): « 1 [2]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Операционная система и системные вызовы »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB