|
|
|||||
Когда использовать throw?
Вопрос в следующем: из приложения (Flex) идет запрос на сервер(php скрипт), для добавления записи в БД. Если запись не добавилась, то в что лучше делать на стороне клиента - выбрасывать исключение или просто прекращать работу метода (return) и выводить сообщение юзеру об ошибке(Alert.Show)?
И вообще, в каких случаях делать thow? По крайней мере мне удается обойтись простой проверкой if else, и при неудачном результате приостановить выполенние действия(обработчика события) и вывести сообщение. К try-catch вопросов нет, там все понятно в каких случаях использовать. |
|
|||||
[+4 06.05.14]
|
throw error используется скорее для системных ошибок чем для нотификаций. При throw на сколько я помню выкидывается RTE флешка прекращает работу. Так что вам это врядли пригодится.
А вот МНЕ лично непонятно в каких сулчаях try-catch юзать. Скока проектов не написал, ну ниразу не пригодлся
__________________
Марк Tween |
|
|||||
Регистрация: May 2010
Адрес: пространство в положении
Сообщений: 219
|
есть хороший пример почти во всех языках программирования: деление на 0, конструкция try/catch - служит для того, что бы программа смогла завершиться корректно и сообщить об этом куда надо. ( к примеру в Яве, без try/catch и т.д. почти никуда).
|
|
|||||
in4core, вот и я о том же. Мне удается практически все проверить if-else констуркцией.
|
|
|||||
throw используется для уведомлении о некорректной работе метода.
Скажем, метод должен отрисовать вьюшку и добавить ее в контейнер. Метод рисует вьюшку, но тут вдруг обнаруживается что контейнер == null. Тут вполне логично сгенерировать исключение. Но в as3 более распространен подход с событиями. С одной стороны логично использовать исключения в случае с синхронными ошибками и события с асинхронными. Но с другой стороны зачем реализовывать 2 варианта, если можно обойтись только событиями? В as3 события реализовать гораздо проще чем в java, поэтому throw и не получил распространения. |
|
|||||
Обычно выброс ошибки используется в базовых вещах, что способствует исключению ошибок в дальнейшей разработке, так как при тестировании вы заранее будете оповещены что сделали что-то не так.
function configureSomething (intializer: Object) : void { if (!initializer) throw new ArgumentError("Передаваемый аргумент не может быть null"); if (initializer is XML) { ... } else if (initializer is String && isValidURL(initializer as String) { } else { throw new ArgumentError("Объектом инициализации может служить только URL или XML"); } } А конструкцию try catch надо использовать там, где это уместно. Единственная ситуация в которой мне действительно приходилось её использовать, то есть в этом была необходимость, это при использовании getDefinitionByName и т.п. функции которые выбрасывают RTE. |
|
|||||
Banned
[+1 05.11.11]
[+1 09.08.11] Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
|
Нормальные IDE при выбросе чего-то через throw, ставят на строку, откуда это было сделано брейкпоинт, и сразу становится понятно, где произошла ошибка. Я использую их только с этой целью.
Цитата:
|
Часовой пояс GMT +4, время: 17:28. |
|
« Предыдущая тема | Следующая тема » |
|
|