Re[2]: Exceptions
От: Mika Soukhov Stock#
Дата: 07.11.03 16:16
Оценка: 21 (3) +1
Здравствуйте, Sinatr, Вы писали:

M>>Меня интересуют правильные подходы к их применению. Т.е. когда возвращать значение выполнения ф-ии, а когда бросать эксепшн.


S>Тебе решать. В принципе это две техники. Одна старая — это возвращаемое значение (false, -1) и/или какая-либо глобальная переменная (доступ к которой в стиле GetLastError() ). Вторая — использование исключений, более гибкая. Можно использовать одновременно обе или даже комбинировать.


Возвращаемые значения иногда полезнее. Но в любом случае, они не должны означать код ошибки.

M>>Когда использовать стандартные, а когда свои?


S>Если нужно обработать что-то специфическое (или более информативное, чем просто строка текста), то создается свой класс (наследованный от System.Exception) и с помощью него можно делать что-то более серьезное (например, сделать возможность сортировки ошибки на критические — требующие выхода из программы, warning — выдающие предупреждение пользователю и какие-нибудь еще, которые просто логируются, но на выполнение программы это никак не влияет).

S>В большинстве случев достаточно использование имеенно Exception, т.к. он уже имеет достаточную функциональность.

Не согласен. Если перехватывать Exception, то можно перехватить то, что не совсем нужно. Например, верхний код ожидает этот тип исключения. Получаеться что он никогда его не поймает.

На мой взгляд исключения стоит разделять на уровни. Тоесть то, что опрерирует стандартными (или чужими исключениями) это начальный уровень. У него есть свое исключение, которое, оборачивает в себя все остальные. Таких образом, ничего лишенего не вылезет, и обработка станет куда симпатичнее и приятнее. Ибо перехватывать нужно будет 1-2 типа исключенией, а не все подряд и FCL.

M>>Как правильно обрабатывать и в каком месте.


S>....один красивый try {...} и catch(...) {...}.


Ага. Тянется через всю функциональность программы.

S>Еще есть finally, но мне лично еще не доводилось его использовать (как это не смешно звучит).


using используем?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.