![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| romantik2011 |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 49 Регистрация: 20.7.2011 Репутация: нет Всего: нет |
Читаю про исключения в пхп, решил написать код с исключениями, не срабатывают исключения, а выдаёт ошибку на 19 строке:
|
||||
|
|||||
| romantik2011 |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 49 Регистрация: 20.7.2011 Репутация: нет Всего: нет |
Написал так:
Я хочу чтоб сработало исключение при пустой передаче первого аргумента конструктору, а исключение не срабатывает, а выдаёт такой результат:
и даже значения переданные конструктору не подставляются. |
||||
|
|||||
| Muerto |
|
||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1207 Регистрация: 23.9.2006 Репутация: 3 Всего: 4 |
Начнем пожалуй с того что
Начнем с того что
И продолжим
|
||||
|
|||||
| romantik2011 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 49 Регистрация: 20.7.2011 Репутация: нет Всего: нет |
Всё, спасибо так, сработало.
Меня интересует один вопрос. Зачем нужно писать throw, если зроу выдаёт исключения ,а потом всё равно идёт переход от него в catch и КЭТЧ выбрасывает ещё исключение, зачем это нужно? Почему не достаточно одно блока try...catch? Зачем нужен всё-таки ЗРОУ, если его же задачу может выполнить КЭТЧ? |
|||
|
||||
| romantik2011 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 49 Регистрация: 20.7.2011 Репутация: нет Всего: нет |
А оператор throw даёт возможность выбросить исключение, но в этом не главная его цель, а его цель сразу перелететь на оператора catch с тем же типом создаваемого объекта класса что и в операторе throw и обработать его в КЭТЧ? То есть смысл оператора ЗРОУ чтоб перелететь сразу в кетч, отдать объекту описанного в кетче исключение и обработать его в кетче?
|
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 75 Всего: 260 |
последний пост не понял
"нужно писать throw", потому что выбрасывание исключения(throw) и его перехват(try ... catch или try ... finally) это две разные конструкции/механизма. демонстрация:
и никто никуда "не перелетает" при выбрасывании исключения. в смысле, что принцип работы с исключениями - это не if + goto. |
|||
|
||||
| krundetz |
|
|||
![]() Вечный странник ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1400 Регистрация: 14.6.2007 Где: НН(Сормово) Репутация: 20 Всего: 69 |
romantik2011, мягко говоря шокирован вашим кодом. Вам сначала необходимо понять что такое исключения и зачем они необходимы. Ключевые слова при использование исключений это: "поднятие" и "обработка во вне". Посмотрите на код приведенные skyboy, поднятие у него нет, а вот обработка во вне есть. В вашем же коде, по идеи экземпляр класса не должен быть создан ни при каких условиях, тем не менее он создается, не смотря на то что аргументы в конструктор переданные неверные, а следовательно может использоваться далее в программе. Чтобы было понятнее привожу пример почему ваш вариант в корне неверен, немного изменив приведенный вами код.
Попробуйте запустить такой код. Надеюсь понятно, что этот написанный по вашему шаблону пример не исключит ситуацию деления на 0. P.S. Советую также подучить что такое классы и ООП. Это сообщение отредактировал(а) krundetz - 27.7.2011, 11:42 |
|||
|
||||
![]()
|
| Правила форума "PHP" | |
|
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |