Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.15.144.170] |
|
Сообщ.
#1
,
|
|
|
Навеяно обработчик исключений.
Цитата З.Ы. и вообще что за мания пошла бросать исключения в методах класса. Руки бы оторвать разработчикам. и Цитата Ну я бы наоборот за возвращаемые значения руки поотрывал... Ваше мнение, коллеги! |
Сообщ.
#2
,
|
|
|
Я за исключения.
Если же немного расширить контекст, то вот эти вот проблемы: Цитата zss @ Например я пишу в сокет в методе и получаю исключение. Я его отлавливаю там же и вывожу статус что не получилось. Тоесть теоритически можно попытаться еще раз. А что если он закрылся ? Тогда либая повторная попытка заведомо приведет к исключению. Что делать ? Бросать свое исключение ? Дергать переданный в класс делегат ? Но тогда как удалить этот объект, если вызов делегата происходит из catch метода самого класса? решены в системе состояний в Common Lisp. По сути, это те же исключения, но в которых 1) при нахождении обработчика исключения при подъеме по стеку не вызываются деструкторы всех объектов 2) код между обработчиком ошибки и местом, где ошибка возникла, может предоставить несколько точек рестарта, и обработчик может выбрать один из рестартов (при этом весь стек ниже точки рестарта будет развернут, и у соответствующие объекты будут разрушены) |
Сообщ.
#3
,
|
|
|
No silver bullets.
|
Сообщ.
#4
,
|
|
|
Исключения, конечно.
Если кидаются исключения, то код выглядит так: Proc1(); Proc2(); Proc3(); если коды ошибок, то так: if (Proc1() = NOERROR) then if (Proc2() = NOERROR) then if (Proc3() <> NOERROR) then ;// обработка ошибки в Proc3 else ;// обработка ошибки в Proc2 else ;// обработка ошибки в Proc1 |
Сообщ.
#5
,
|
|
|
Исключения! Контролируемые!
Возвращаемые значения, как у WinAPI мало кто проверяет. Очень знаете ли бесит, когда в прикладной программе из-за какой-нибудь чепухи вылезает Unhandled Exception или Segmentation Fault и программу прибивают. А не в прикладных это еще более серьезно. А тут, хочешь не хочешь - придется. |
Сообщ.
#6
,
|
|
|
еxception есть хорошо
|
Сообщ.
#7
,
|
|
|
Коды возврата - это старый "сишный" стиль
Новый стайл - исключения |
Сообщ.
#8
,
|
|
|
В прикладной программе - только исключения. Но в драйверах и вредных программах типа вирусов их юзать "тяжко", т.к. использование С++ исключений обязательно тянет за собой CRTL. Однако, писателей прикладный программ количественно больше, поэтому исключения рулят
|
Сообщ.
#9
,
|
|
|
Что-то холивар не задался.
Хде, я вас спрашиваю, оппозиция к исключениям? |
Сообщ.
#10
,
|
|
|
Цитата cozzzy @ Хде, я вас спрашиваю, оппозиция к исключениям? Ну, лисповские condition — ничего так оппозиция... |
Сообщ.
#11
,
|
|
|
Хых, не холивар а карательная операция какая то...
|
Сообщ.
#12
,
|
|
|
эти твари (возвращаемые значения ) у меня много крови выпили, можно уже и покарать
|
Сообщ.
#13
,
|
|
|
исключения.
относительно С++: исключения в границах модуля, либо сборка всех модулей в одинаковых условиях (т.к. нет стандарта реализации распространения исключений, см.: "Стандарты программирования на С++: 101 правило и рекомендация", Саттер & Александревску, часть 62). А вообще про обработку ошибок (опять же относительно ++) неплохо (имхо) написано в части 72 той же книги, вот название части: "Для уведомления об ошибках следует использовать исключения" ) |
Сообщ.
#14
,
|
|
|
Цитата cozzzy @ Я, конечно, не оппозиция, но больше склоняюсь к кодам возврата. Имею дело с реал-тайм приложениями, отсюда исключения признаю только в инит-тайм, т.к. в ран-тайм исключения обходятся достаточно дорого. В инит-тайм в большинстве случаев даже не исключения нужны, а функции типа SYS_abort. Хде, я вас спрашиваю, оппозиция к исключениям? |