Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010
Помог: 53 раз(а)
порядок выбрасывания исключения throw new Exception([$text]);
стандартная запись которая используется в нескольких языках (в с# так же кажись)
раньше оно мне просто не нравилось, а щас созрел для вопроса, а что еще можно бросать кроме исключений? если ничего то зачем тогда вообще это бросание.?
EuGen
Отправлено: 08 Августа, 2012 - 14:07:58
Профессионал
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
Не понял сути вопроса. То есть Вам не нравится эта стандартная языковая конструкция? Если так, то, думаю, более уместно будет написать Расмусу Ледорфу.
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
DlTA
Отправлено: 08 Августа, 2012 - 14:24:11
Постоянный участник
Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010
Помог: 53 раз(а)
вопрос в другом, что еще можно выбрасывать кроме исключений.
Stierus
Отправлено: 08 Августа, 2012 - 14:24:36
Рекордсмен по количеству сообщений за 7 дней
Покинул форум
Сообщений всего: 2132
Дата рег-ции: Дек. 2008 Откуда: Москваль
Помог: 52 раз(а)
от исключений можно наследоваться ...
DlTA
Отправлено: 08 Августа, 2012 - 14:28:59
Постоянный участник
Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010
Помог: 53 раз(а)
вопрос не в том что написано в доках, их я полистал,
например фраза throw new Exception([$text]); (о наследовании от основного класса ислючений вкурсе)
понимается так: выбросить объект класса исключение
что еще можно выбросить и куда? (плз. без шуток на эту реплику))
DelphinPRO
Отправлено: 08 Августа, 2012 - 15:34:32
Активный участник
Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
Все, что предполагается к использованию в throw должно быть наследовано от базового класса Exception. Ничего иного "выбросить" не получится. (а если бы и получилось - в чем смысл?)
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
DlTA
Отправлено: 09 Августа, 2012 - 17:55:34
Постоянный участник
Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010
Помог: 53 раз(а)
EuGen пишет:
Все, что предполагается к использованию в throw должно быть наследовано от базового класса Exception. Ничего иного "выбросить" не получится. (а если бы и получилось - в чем смысл?)
всмыс в том что в данном случае как минимум одно слово в конструкции (в моем понимании) лишнее throw new Exception
ну вот если нельзя больше нигде это использовать то для чего это было расчитано, может таки что еще по расчетом должно было кидаться?
OrmaJever
Отправлено: 09 Августа, 2012 - 18:10:07
Активный участник
Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010 Откуда: Чернигов
Помог: 299 раз(а)
Бросать моджно только обьекты, если бросить например функцию
Тоесть проблема в одном лишнем слове new, а если бы его небыло (throw Exceprion) было бы понятне и вопроса не возникло? Оно просто обозначает создание обьекта и всё.
----- Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
DlTA
Отправлено: 09 Августа, 2012 - 18:59:23
Постоянный участник
Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010
Помог: 53 раз(а)
OrmaJever пишет:
Бросать моджно только обьекты, если бросить например функцию
Я уверен у разработчиков есть своё обьяснение. На это может быть куча причин, возможно что бы не усложнять парсер, он парсит отдельно throw и отдельно создание обьекта по синтаксису, возможно зделали на будещее, что бы можно было расширить этот механизм и сохранить совместимость, например зделают в php6 возможность бросать и функции, и старые коды перестанут работать возможно другая причина. Вот например в с++ есть два способа создания обьекта и этими двумя способами можно бросать исключения.
Возможно и в php что бы небыло ничего нового и непонятного зделано имено так.
Это конечно чисто мои предположения, я некогда не заморачиватся над такой мелочью.
----- Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
Мелкий
Отправлено: 09 Августа, 2012 - 19:25:23
Активный участник
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
throw ($isFatalError ? new Fatal_exception :new My_Exception);
Как-то так.
----- PostgreSQL DBA
Stierus
Отправлено: 09 Августа, 2012 - 19:35:58
Рекордсмен по количеству сообщений за 7 дней
Покинул форум
Сообщений всего: 2132
Дата рег-ции: Дек. 2008 Откуда: Москваль
Помог: 52 раз(а)
чего-то странную демагогию вы завели %)
В php можно кинуть исключение и это клево . Что такое исключение - это ЭКЗЕМПЛЯР класса Exception, что с ним делать - его можно отследить и обработать.
Что бы сделать экземпляр класса - без new (ну или хотя бы clone) не обойтись.
DlTA пишет:
всмыс в том что в данном случае как минимум одно слово в конструкции (в моем понимании) лишнее
throw new Exception
это говорит о том, что вы не понимаете, с чем работаете. new - совсем не обязательная конструкция , абсолютно нормальной является практика такого плана:
Fatal error: Uncaught exception 'Exception' in X:\www\test.php:216 Stack trace:#0 X:\www\test.php(220): DB->comit() #1 {main} thrown in X:\www\test.php on line 216
Что я делаю не так? Если закоментирова строчку throw $e; то ошибки нет.
----- Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
DlTA
Отправлено: 09 Августа, 2012 - 21:48:37
Постоянный участник
Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.