![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| EKoshelev |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 509 Регистрация: 1.9.2004 Репутация: нет Всего: нет |
Я, например, никогда в своих прогах не отлавливаю исключения. Если мне нужно разделить одно число на другое я проверяю делитель на ноль. И если ноль, то выполняю какие-то действия. На сколько я понимаю это дело можно отловить с помощью try.
Как вы считаете рационально я поступаю не отлавливая исключения. Может я что-то при этом теряю. Обрисуйте пожалуйста плюсы и минусы. -------------------- Вежливым и адекватным предлагаю общаться на "ты". |
|||
|
||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 36 Всего: 329 |
Я "отлавливаю" исключения только там, где мне нужно вывести свое сообщение об ошибке, т.е. можно не только вывести сообщение о том, что программа выполнила недопустимую ошибку, а и о том, что нужно сделать, что в следующий раз такой ошибки не было.
|
|||
|
||||
| Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 192 Всего: 484 |
Отлавливать нужно, когда вызываешь чужую функцию. Свое можно просто проверять, если уверен, что ничего не пропустишь. Когда кода много, то высока и вероятность того, что где-то то-то упустить.
Кроме того ловить нужно, когда работаешь с аппаратной частью, сетью и прочими вещами, когда нет гарантии, что все пройдет путём. |
|||
|
||||
| <Spawn> |
|
|||
![]() Око кары:) ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2776 Регистрация: 29.1.2003 Где: Екатеринбург Репутация: 44 Всего: 64 |
Я ставлю блок отлавливания исключений в случае, если нет 100% вероятности положительного исхода выполнения кода. Причем не обязательно для этого должны быть вызваны "не свои" функции \ методы классов - в свох же я в критичных местах генерирую исключение сам, что бы на программном слое более высокого уровня адекватно отреагировать на исключение и прервать дальнейший ход работы кода без выплнения тучи вложеных ветвлений.
В таких случаях нужно дробить сплошной код на более мелкие блоки - функции, каждый из которых укладывался бы строках в 15-ти(и его было бы легко тестировать) - это кстати одна из идей рефакторинга. -------------------- "Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков. |
|||
|
||||
| Akella |
|
||||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 36 Всего: 329 |
Такая ситуация. Импорт данных из Excel в твою БД. Импортируются данные в ячейку типа Number (таблица Paradox).
В ячейках могут быть данные типа: 4,25 2,85 5,6 пробел8,56 -при импорте этой строки может произойти ошикба.
Я использую F1Book
|
||||
|
|||||
| Alex |
|
||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4147 Регистрация: 25.3.2002 Где: Москва Репутация: 80 Всего: 162 |
Ужас какой, а я обычно записываю все это ввиде 1 строки:
-------------------- Написать можно все - главное четко представлять, что ты хочешь получить в конце. |
||||||
|
|||||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 36 Всего: 329 |
Вау! Нашел в справке по Delphi еще такое "floating point conversion routines".
Как говориться, век живи - век учись. |
|||
|
||||
| Петрович |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1000 Регистрация: 2.12.2003 Где: Москва Репутация: 25 Всего: 55 |
Я не только использую try except end для обработки ошибок возникающих в вызываемых мною функциях, процедурах и методах, но и сам активно использую генерацию исключений (raise) в своих процедурах, функциях и методах. Это очень удобный механизм структурных переходов, причем не только в ошибочных ситуациях. А уж в ошибочных, это еще и возможность передать на более верхний уровень (не обязательно вызывающий) дополнительную информацию о возникшей ошибке которая может быть либо просто показана пользователю, либо проанализирована и обработана программой.
-------------------- Все знать невозможно, но хочется |
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |