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
Форумы портала PHP.SU :: Версия для печати :: throw new Exception [2]
Форумы портала PHP.SU » » Операционная система и системные вызовы » throw new Exception

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

16. DelphinPRO - 09 Августа, 2012 - 22:30:30 - перейти к сообщению
1. Бросить можно только объект исключения (Exception или наследник)
2. Бросить можно уже созданный объект, либо создать его прямо в конструкции throw

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


никаких противоречий в синтаксисе не вижу.
17. Bio man - 09 Августа, 2012 - 23:47:21 - перейти к сообщению
DlTA пишет:
возможно ошибка тут throw new Exception();
Нет.
OrmaJever пишет:
Что я делаю не так?
Уж тебе то не знать... throw $e; не перехватывается нигде.
18. Мелкий - 10 Августа, 2012 - 10:05:01 - перейти к сообщению
OrmaJever пишет:
Что я делаю не так?

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

PS: кстати, в PHP5.5 может появиться небесполезный finally Воздушный шарик
19. Stierus - 10 Августа, 2012 - 11:31:01 - перейти к сообщению
Мелкий , finally - вещь полезная, но в кривых руках сильно опасная (поведение у нее не очевидное, а мануалы люди читать не любят)
20. Мелкий - 10 Августа, 2012 - 11:45:15 - перейти к сообщению

Stierus, в кривых руках у всего поведение не очевидное... У любых управляющих структур, включая break, continue, return.
А с поведением предпочту разбираться ближе к релизу, а то придумают опять что-нибудь странное в реализации. Наживую-то не сталкивался с finally, только впечатлился на саму возможность у Макконнелла.
21. EuGen - 10 Августа, 2012 - 11:54:35 - перейти к сообщению
Наживую будет как и написали уже
PHP:
скопировать код в буфер обмена
  1. try
  2. {
  3.    return true;
  4. }
  5. finally
  6. {
  7.    return false;
  8. }

По поводу непонятности конструкции (по теме)- если честно, пока так и не понял, в чем трудность с тем, что при использовании исключений используется понятие "выбросить исключение", throw exception (возможно, просто не самый удачный перевод?)
22. DlTA - 10 Августа, 2012 - 19:17:21 - перейти к сообщению
вопрос скорее возник из за того что я был не в курсе что можно было бросить пойманное исключение дальше.
23. Stierus - 10 Августа, 2012 - 19:50:19 - перейти к сообщению
DlTA, у конструктора исключения есть третий параметр, довольно забавный Улыбка
24. DlTA - 10 Августа, 2012 - 23:29:32 - перейти к сообщению
это просто замечательно если не учитывать тот факт что в мане не описаны детали(
25. z1o - 19 Сентября, 2012 - 21:31:36 - перейти к сообщению
DlTA пишет:
это просто замечательно если не учитывать тот факт что в мане не описаны детали(

Можешь взять нормальную книгу по обработке исключений на с++, а на php там все аналогично (только в php чуть синтаксис не тот и возможностей меньше Радость )
26. DlTA - 19 Сентября, 2012 - 21:39:07 - перейти к сообщению
z1o пишет:
Можешь взять нормальную книгу по обработке исключений на с++
о да, помню те времена когда я грыз с++, вот с тех самых у меня и возниклов отрицательное впечатление
а читал я тогда мсдн

 

Powered by ExBB FM 1.0 RC1