и даже значения переданные конструктору не подставляются.
Champion
Отправлено: 25 Июля, 2011 - 20:32:40
Активный участник
Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008 Откуда: Москва
Помог: 57 раз(а)
romantik2011 пишет:
$n=""
Операции сравнения: == и ===. = - это присваивание. Вы присваиваете "" переменной, а "" приводится к false. Поэтому все три условия - false, поэтому эксепшн не бросается.
romantik2011
Отправлено: 25 Июля, 2011 - 20:39:47
Новичок
Покинул форум
Сообщений всего: 62
Дата рег-ции: Июль 2011
Меня интересует один вопрос.
Зачем нужно писать throw, если зроу выдаёт исключения ,а потом всё равно идёт переход от него в catch
и КЭТЧ выбрасывает ещё исключение, зачем это нужно? Почему не достаточно одно блока try...catch?
Зачем нужен всё-таки ЗРОУ, если его же задачу может выполнить КЭТЧ?
LIME
Отправлено: 25 Июля, 2011 - 23:33:31
Активный участник
Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010
Помог: 322 раз(а)
в случае если throw не случилось код после него исполняется до конца блока try
если выбросилось исключение выполняется сразу блок catch
другими словами throw не ограничивает блок try ...это как-бы goto что-ли)) (Добавление)
кажется я неясно выразился потому добавлю
throw это такая точка в которой решается будет продолжаться стандартный ход программы(остаток блока Try) или запустится обработчик ошибки(catch)
romantik2011
Отправлено: 26 Июля, 2011 - 00:10:43
Новичок
Покинул форум
Сообщений всего: 62
Дата рег-ции: Июль 2011
Помог: 0 раз(а)
То есть ЗРОУ даёт возможность отправится в кэтч, а без ЗРОУ, трай...кетч не сможет выдавать исключения?
Champion
Отправлено: 26 Июля, 2011 - 08:53:04
Активный участник
Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008 Откуда: Москва
Помог: 57 раз(а)
romantik2011 пишет:
Вот так вообще выдаёт ошибку:
Очень полезно самостоятельно научиться читать тексты ошибок и понимать их. Там ничего сложного не написано. Обычные человеческие слова. Плюс всегда есть поисковик, в который эти слова можно скопировать.
Конструкция
try {
throw
}catch{
}
это по сути имитация goto и ничего больше. Исключения нужны несколько для других случаев.
Например, вы написали какой-то метод. Этот метод будет использоваться непонятно где и не понятно, в каких условиях. Если в этом методе происходит ошибка, то выводить ее опреатором echo - не круто. Вдруг кодом будет пользоваться человек, говорящий на другом языке или вдруг этот человек захочет ошибку не выводить, а писать в лог.
Поэтому вы в своей функции бросаете ексепшн, а человек потом пользуется вашей функцией вот так
try {
вашафункция()
} catch {
делает в случае ексепшна то, что хочет
}
romantik2011
Отправлено: 26 Июля, 2011 - 22:07:46
Новичок
Покинул форум
Сообщений всего: 62
Дата рег-ции: Июль 2011
Помог: 0 раз(а)
А оператор throw даёт возможность выбросить исключение, но в этом не главная его цель, а его цель сразу перелететь на оператора catch с тем же типом создаваемого объекта класса что и в операторе throw и обработать его в КЭТЧ? То есть смысл оператора ЗРОУ чтоб перелететь сразу в кетч, отдать объекту описанного в кетче исключение и обработать его в кетче?
LIME
Отправлено: 26 Июля, 2011 - 22:09:57
Активный участник
Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010
Помог: 322 раз(а)
romantik2011 садись 5
romantik2011
Отправлено: 26 Июля, 2011 - 22:12:56
Новичок
Покинул форум
Сообщений всего: 62
Дата рег-ции: Июль 2011
Помог: 0 раз(а)
Хорошо, а когда тогда не используют зроу, а используют чисто try...catch без ЗРОУ?
Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010
Помог: 322 раз(а)
никогда
в этом случае всегда будет выполняться весь try a catch никогда (Добавление)
throw создает обьект исключение и бросает его
catch ловит и обрабатывает обьект созданый в throw
Stierus
Отправлено: 27 Июля, 2011 - 12:42:08
Рекордсмен по количеству сообщений за 7 дней
Покинул форум
Сообщений всего: 2132
Дата рег-ции: Дек. 2008 Откуда: Москваль
Помог: 52 раз(а)
Цитата:
Зачем нужно писать throw, если зроу выдаёт исключения ,а потом всё равно идёт переход от него в catch
и КЭТЧ выбрасывает ещё исключение, зачем это нужно? Почему не достаточно одно блока try...catch?
Зачем нужен всё-таки ЗРОУ, если его же задачу может выполнить КЭТЧ?
В приведенном коде ни один кэтч не выбрасывает исключений ... просто разные блоки катч срабатывают на разные типы исключений.
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.