metaclass: (Default)
[personal profile] metaclass
Хорошо ли в C++ программе делать логику на исключениях?
Я ща втыкаю в одну опенсорсную СУБД в продакшене отладчиком и вижу что там на каждый запрос валится стопицот крестиковых исключений, и не понимаю, это нормально или нет.

Date: 2014-09-29 09:20 am (UTC)
From: [identity profile] aamonster.livejournal.com
Страшные вещи вы рассказываете... Первая мысль "а вот у нас на маке можно вызывать методы у нулевого указателя!", вторая "блин, я ж писал на винде - никто так не делал, на ноль проверяли явно, и это задалбывало"

Date: 2014-09-29 09:26 am (UTC)
From: [identity profile] bydlorus.livejournal.com
Ну вот, а зачем проверять на ноль, если тебе придёт красивое исключение NullReferenceException и его можно обработать в одном месте? А потом пишешь код проверки доступа и думаешь, как проверить - смотришь, а если доступа нет, то приходит красивое исключение NullReferenceException. И решение в общем-то очевидное - нулевой объект, доступа нет, перехватим исключение и закроем дефект. Так часто и программируют - никто не разбирается, почему тут приходит это число или эта ошибка. Просто закладываются на то, что есть.

Date: 2014-09-29 09:45 am (UTC)
From: [identity profile] aamonster.livejournal.com
Так штука в том, что обычно надо продолжить выполнение, а c++ exceptions этого не умеют.
Итого, для пользования NullReferenceException - надо писать 100500 обработчиков (в каждой функции). Зачастую проще перед каждой строчкой написать if(...), а в Objective C и этого не надо - обращение к методу нулевого объекта ничего не сделает и вернёт (если тип результата не длиннее указателя) ноль (когда пишешь гуйню - удобно, а в нормальном коде всё равно проверки ставить надо).

Profile

metaclass: (Default)
metaclass

April 2017

S M T W T F S
      1
2345678
9101112 131415
16171819202122
23242526272829
30      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Sep. 8th, 2025 10:52 am
Powered by Dreamwidth Studios