Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.138.174.95] |
|
Страницы: (37) « Первая ... 32 33 [34] 35 36 ... Последняя » ( Перейти к последнему сообщению ) |
Сообщ.
#496
,
|
|
|
Цитата Wound @ Это ты сравнил, не я:Я не понял вопроса, он какой то глупый. Приведи вариант функции GetLastError Только с исключениями, вместо возврата? Я не понимаю зачем это вообще нужно, и как это будет выглядеть? Ты сравнивать колбасу и палец ИМХО. Цитата Wound @ Это было к тому, что понять какую ошибку/неошибку/код возврата может генерировать функция/класс, проще визуально наблюдать глазами, чем какие исключения функция может генерить. |
Сообщ.
#497
,
|
|
|
Я описал её прямо в том предложении. Если у тебя память как у рыбки и ты не помнишь, что я это писал - есть история сообщений, а предоставленной инфы в прошлом посте более чем достаточно для того, чтобы найти то сообщение. Ради тебя мне это делать лениво. А это значит, что ты опять соврал. Цитата Wound @ Ну вот я тебе привел выше пример, когда забивание на bad_alloc, приведет к по сути багу. С чего бы? Если у тебя в этом сценарии выпал bad_alloc, то это как раз тот случай, когда в js ты совершенно точно не вернёшь ничего. Подозреваю, что он просто сел в лужу и сейчас изо всех сил делает вид, что это не так. Даже интересно, какой ещё выверт родить сумеет |
Сообщ.
#498
,
|
|
|
Сообщ.
#499
,
|
|
|
Цитата applegame @ При возврате ошибок придется городить точно такое же RAII, ранний return по сути ничем не отличается от throw. Ранний return это такой же return как и поздний, разницы абсолютно никакой, для вызывающего кода. |
Сообщ.
#500
,
|
|
|
Цитата Wound @ Ну если развить эту тему, то современные IDE при наведении мыши краткий кусок из доков выводят, где написано, что именно кидает функция, ну и доки ща модно прямо в комментах писать, так что go to declaration. и читай на здоровье.Ну если ты в блокноте код набираешь, то да, придется. А если в более менее какой то IDE, хотя бы 2000 года выпуска, то они как правило сами подсвечивают такие вещи. В самом худшем случае можно сочетание клавишь нажать "Go to declaration" и посмотреть. Но это все лирика, а факт в том, что сигнатуры в любом случае недостаточно. Хотя,ЕМНИП в Java нужно явно перечислять все виды исключений, которые может бросить функция. Поправьте, если я ошибаюсь. |
Сообщ.
#501
,
Сообщение отклонено: OpenGL -
|
Сообщ.
#502
,
|
|
|
Цитата Wound @ Если ты собрался пробросить ошибку наверх в вызывающем коде, то тебе придется и в нем сделать ранний return с такой же потенциальной утечкой. Ранний return это такой же return как и поздний, разницы абсолютно никакой, для вызывающего кода. |
Сообщ.
#503
,
|
|
|
Цитата D_KEY @ На базе этого делают такого рода хрень даже: libcsptr Но я не юзал. А, ну это я встречал, даже юзал. Цитата applegame @ Ну если развить эту тему, то современные IDE при наведении мыши краткий кусок из доков выводят, где написано, что именно кидает функция, ну и доки ща модно прямо в комментах писать, так что go to declaration. и читай на здоровье. Но с исключениями не все так очевидно выходит. Если бы IDE выявляла все исключения, которые функция может кинуть и показывала их. Тогда бы тут у кодов возврата шансов не было бы совсем. |
Сообщ.
#504
,
|
|
|
Цитата applegame @ то тебе придется и в нем сделать ранний return с такой же потенциальной утечкой. Или goto cleanup... а, не, Киля категорически против goto, так что лучше не напоминать |
Сообщ.
#505
,
|
|
|
Цитата applegame @ Если ты собрался пробросить ошибку наверх в вызывающем коде, то тебе придется и в нем сделать ранний return с такой же потенциальной утечкой. Почему с утечкой? Перед возвратом, можно очистить все выделенные до этого ресурсы. Например, на сколько я заметил, по примерам в MSDN, майкрософт применяется подход с метками. Аля goto cleanup: Где идет очистка всех ресурсов и возврат. Правда я не фанат такого подхода. Но на Си я мало писал, в основном там где я писал, фильтры под apache, там были подобия cleanup'ов, котрые выше привел D_KEY. Добавлено Ты себя еще отмодерируй рыбка. Ты оскорбляешь, а мне нельзя? |
Сообщ.
#506
,
|
|
|
Цитата Wound @ С кодами тоже ничего очевидного. Я вот пишу на elixir, где вообще все повально на возвращаемых ошибках. Так вот без доков все равно ничего не поймёшь. Но с исключениями не все так очевидно выходит. Если бы IDE выявляла все исключения, которые функция может кинуть и показывала их. Тогда бы тут у кодов возврата шансов не было бы совсем. |
Сообщ.
#507
,
|
|
|
Цитата Wound @ Ты оскорбляешь, а мне нельзя? Я не вижу в своих постах оскорблений. Считаешь, что я не прав - обращайся к суперам/админам, а не ко мне. Добавлено Цитата applegame @ Хотя,ЕМНИП в Java нужно явно перечислять все виды исключений, которые может бросить функция. Поправьте, если я ошибаюсь. От этого подхода отказались уже - решили, что он неудобен. |
Сообщ.
#508
,
|
|
|
Цитата applegame @ С кодами тоже ничего очевидного. Я вот пишу на elixir, где вообще все повально на возвращаемых ошибках. Так вот без доков все равно ничего не поймёшь. Ну если там int'ы возвращаются, или какие нибудь char'ы, строки, то тут конечно без доков ниче не поймешь. В COM'ах всяких наприме всякие HRESULT'ы возвращаются, этих там кодов овер дофига, а каждая функция, естественно не все возвращает, и приходится тоже лезть в доку. Если бы там как то разграничить эти коды, возможно было бы проще. |
Сообщ.
#509
,
|
|
|
Цитата Wound @ Я написал потенциальной утечкой. Если ты задумал вручную чистить ресурсы, то можно и с исключениями обойтись без. RAII, чисти все в catch или если есть finally то в нем, в D можно чистить в scope(exit). RAII это всего лишь способ избежать ручной чистки, применять его удобно и для исключений и для ранних return'ов. Почему с утечкой? Перед возвратом, можно очистить все выделенные до этого ресурсы. Например, на сколько я заметил, по примерам в MSDN, майкрософт применяется подход с метками. |
Сообщ.
#510
,
|
|
|
Цитата OpenGL @ Я не вижу в своих постах оскорблений. Считаешь, что я не прав - обращайся к суперам/админам, а не ко мне. Ну я ж говорил что слепой. Добавлено Цитата applegame @ Я написал потенциальной утечкой. Если ты задумал вручную чистить ресурсы, то можно и с исключениями обойтись без. RAII, чисти все в catch или если есть finally то в нем, в D можно чистить в scope(exit). RAII это всего лишь способ избежать ручной чистки, применять его удобно и для исключений и для ранних return'ов. RAII хороший в С++, в Сях все равно это преврящается в ручной вызов функции очистки. Я то говорил в контексте Си, а не С++. |