Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.222.111.24] |
|
Страницы: (37) « Первая ... 31 32 [33] 34 35 ... Последняя » ( Перейти к последнему сообщению ) |
Сообщ.
#481
,
|
|
|
Цитата Wound @ Ты на них не ответил, твой ответ был "Какие надо такие и перехватывай". Вот весь твой ответ. Никакой конкретики. Опять враньё. Вообще-то конкретика была. Я даже примеры приводил, когда один и тот же bad_alloc в разных контекстах может быть как ожидаемым (и значит его вполне можно поймать и обработать), так и неожиданным (и тогда на него просто в данный момент забиваем). |
Сообщ.
#482
,
|
|
|
Цитата applegame @ Обсуждали два способа: возврат ошибки через return (ну или через out параметр) и через исключения. Так через Out параметр это уже не возврат ошибки. А если возврат ошибки, тогда точно такой же возврат ошибки, можно назвать и через какой нибудь левый метод/функцию. Какая разница где тебе пишется состояние ошибки? |
Сообщ.
#483
,
|
|
|
Цитата Wound @ Имелось ввиду ошибка открытия файла. А не ошибка которую сама функция возвращает. Т.е. другими словами ошибка не в контексте функции, а в контексте класса. Тогда не понятно для чего ты привел этот пример. Вроде речь шла о сравнении с исключениями, а исключения - это ошибка в контексте функции, а не класса. |
Сообщ.
#484
,
|
|
|
Цитата OpenGL @ Опять враньё. Вообще-то конкретика была. Вранье пока что с твоей стороны. Какую ты конкретику приводил? Покажи где? Я тебе привел функцию, попросил тебя, чтоб ты рассказал как мне запомнить и понять какие исключения она генерит, если у меня нет ее реализации. Ты отмазался общими словами, потом съехал на RAII, На который я просил тебя не съезжать, и начал объяснять мне зачем то, как ты круто юзаешь RAII. Цитата OpenGL @ Я даже примеры приводил, когда один и тот же bad_alloc в разных контекстах может быть как ожидаемым (и значит его вполне можно поймать и обработать), так и неожиданным (и тогда на него просто в данный момент забиваем). Ну вот я тебе привел выше пример, когда забивание на bad_alloc, приведет к по сути багу. Или ты мне хотел открыть америку, что исключения можно наверх прокидывать? Вопрос был про другое. Но теперь уже ты на столько извратил контекст спора, что сейчас по сути идет спор ни о чем. |
Сообщ.
#485
,
|
|
|
Цитата OpenGL @ Ну лично я, тоже так понял. Но как видим, Киля типа подразумевал под этим что-то другое. Лично я под "код возврата" всегда понимал сигнализирование об ошибке путём возвращаемого значения. |
Сообщ.
#486
,
|
|
|
Цитата applegame @ Тогда не понятно для чего ты привел этот пример. Вроде речь шла о сравнении с исключениями, а исключения - это ошибка в контексте функции, а не класса. Это было к тому, что понять какую ошибку/неошибку/код возврата может генерировать функция/класс, проще визуально наблюдать глазами, чем какие исключения функция может генерить. Потому что те же коды возврата можно структурировать. Под исключения же придется все оборачивать в RAII, в том же С++, чтоб избежать утечку ресурса. Вот Qraizer там про SEH писал и что исключения очень хорошо ложатся в модель Си. Но лично я не понимаю как они туда ложаться. Ведь в том же Си нет ни конструкторов, ни деструкторов. При генерировании исключения, которое проглядели - утечка гарантирована ИМХО. |
Сообщ.
#487
,
|
|
|
В любом случае сигнатура никак не поможет запомнить код ошибки. Например. мы знаем (из доков), что функция int doSomething() возвращает код ошибки. Как нам по сигнатура понять какие именно ошибки может вернуть функция?
|
Сообщ.
#488
,
|
|
|
Цитата Wound @ Под исключения же придется все оборачивать в RAII, в том же С++, чтоб избежать утечку ресурса. Это стоит делать и без исключений. |
Сообщ.
#489
,
|
|
|
Цитата applegame @ В любом случае сигнатура никак не поможет запомнить код ошибки. Например. мы знаем (из доков), что функция int doSomething() возвращает код ошибки. Как нам по сигнатура понять какие именно ошибки может вернуть функция? Ну это из той же серии, что и про исключения, но без RAII. Что тебе например мешает завести enum ? Тогда твоя функция будет выглядеть как: SomeStatus doSomething() И уже будет проще понять какие ошибки функция может возвратить. |
Сообщ.
#490
,
|
|
|
Цитата Wound @ Приведи вариант функции is_open() только с исключениями вместо возврата. Дабы можно было прямо вот на конкретном примере сравнить два варианта. Это было к тому, что понять какую ошибку/неошибку/код возврата может генерировать функция/класс, проще визуально наблюдать глазами, чем какие исключения функция может генерить. |
Сообщ.
#491
,
|
|
|
Цитата D_KEY @ Это стоит делать и без исключений. Можешь показать как в Си это сделать? Там как раз нет исключений, мне бы пригодилось. |
Сообщ.
#492
,
|
|
|
Цитата Wound @ Чем проще, ведь хз что там в этом SomeStatus, все равно придется лезть в доку. Тогда твоя функция будет выглядеть как: SomeStatus doSomething() И уже будет проще понять какие ошибки функция может возвратить. |
Сообщ.
#493
,
|
|
|
Цитата applegame @ Приведи вариант функции is_open() только с исключениями вместо возврата. Дабы можно было прямо вот на конкретном примере сравнить два варианта. Я не понял вопроса, он какой то глупый. Приведи вариант функции GetLastError Только с исключениями, вместо возврата? Я не понимаю зачем это вообще нужно, и как это будет выглядеть? Ты сравнивать колбасу и палец ИМХО. |
Сообщ.
#494
,
|
|
|
Цитата Wound @ При возврате ошибок придется городить точно такое же RAII, ранний return по сути ничем не отличается от throw. Под исключения же придется все оборачивать в RAII, в том же С++, чтоб избежать утечку ресурса. |
Сообщ.
#495
,
|
|
|
Цитата applegame @ Чем проще, ведь хз что там в этом SomeStatus, все равно придется лезть в доку. Ну если ты в блокноте код набираешь, то да, придется. А если в более менее какой то IDE, хотя бы 2000 года выпуска, то они как правило сами подсвечивают такие вещи. В самом худшем случае можно сочетание клавишь нажать "Go to declaration" и посмотреть. |