Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Обработка исключений отсутствует
|
|||
|---|---|---|---|
|
#18+
mayton, Так ошибся получается не тот, кто создал джаву, а тот кто на нее перешел с С :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2013, 21:39 |
|
||
|
Обработка исключений отсутствует
|
|||
|---|---|---|---|
|
#18+
Гослинг штоли? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2013, 21:40 |
|
||
|
Обработка исключений отсутствует
|
|||
|---|---|---|---|
|
#18+
mayton ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2013, 21:43 |
|
||
|
Обработка исключений отсутствует
|
|||
|---|---|---|---|
|
#18+
А я с сей не ушёл. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2013, 21:59 |
|
||
|
Обработка исключений отсутствует
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyMasterZiv, У гугловцев есть возможность закидать всех шапками (реализовать все необходимые им библиотеки самим). Так что может и отключают. Обычные разработчики - не могут себе это позволить. Кстати, интересно какой компилятор в Google обычно используют, или тоже пишут свой? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2013, 01:02 |
|
||
|
Обработка исключений отсутствует
|
|||
|---|---|---|---|
|
#18+
?любой код возвратаА с-программист обязан учитывать, что любая функция может выкинуть абсолютно любой код возврата, который непонятно как обрабатыватьНо только это не влияет на ход выполнения вашего кода. А с исключениями надо всегда учитывать, что следующая после вызова функции строка кода может и не выполниться. Абсолютно везде, где в коде с кодом возврата идет return, в коде с исключениями идет throw(), и наоборот, и следующая строчка не выполнится после любого из них. В любом случае необходимо сначала обработать ошибку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2013, 01:14 |
|
||
|
Обработка исключений отсутствует
|
|||
|---|---|---|---|
|
#18+
А я глубоко убежден что я не использую исключения именно потому что понимаю их :) Концепция простая, но излишне подверженная кривому кодированию. Это что вот значит? Ведь так можно по все, что угодно сказать. Циклы — концепция простая, но излишне подвержена кривому кодированию. Классы — ... Но подвержена излише кривому кодированию. Вон, Торвальдс так про весь С++ говорит. Есть языки где без исключений жить нельзя вообще (почти все функциональные например), но в С++ можно прекрасно жить без исключений. Чем с++ принципиально от них отличается? Чем тебе с++ не функциональный язык? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2013, 01:54 |
|
||
|
Обработка исключений отсутствует
|
|||
|---|---|---|---|
|
#18+
MasterZivА я глубоко убежден что я не использую исключения именно потому что понимаю их :) Концепция простая, но излишне подверженная кривому кодированию. Это что вот значит? Ведь так можно по все, что угодно сказать. Циклы — концепция простая, но излишне подвержена кривому кодированию. Классы — ... Но подвержена излише кривому кодированию. Вон, Торвальдс так про весь С++ говорит.И я с ним согласен, поэтому предпочитаю простой C :) MasterZivЕсть языки где без исключений жить нельзя вообще (почти все функциональные например), но в С++ можно прекрасно жить без исключений. Чем с++ принципиально от них отличается? Чем тебе с++ не функциональный язык?Можно на С++ писать в функциональной парадигме. Но это вовсе не обязательно. Можно на С++ писать чисто имеративно. Но это вовсе не обязательно. Можно на С++ писать на чистом ООП. Но это вовсе не обязательно. Но вот то что все учебники по С++ пропагандируют жуткую смесь всех трех парадигм - это не только не обязательно, но еще и крыше-срывательно. Вообще, С++ мне напоминает классическую настольную D&D - можно отыгрывать любого персонажа в меру своей фантазии. Но хорошей игра будет только в том случае если ее ведет хороший dungeon master. Так же и с С++ - можно писать в любом стиле, но хороший проект получится только если есть жесткий лидер группы способный вести проект. И если лидер сказал: "выход из комнаты только на восток", то писать надо именно так - иначе game over и ищи новую работу. В других языках как-то больше порядка. Есть базовая парадигма, есть стандартный стиль оформления, все учебники следуют общим принципам... И только в С++ что ни учебник, то своя колокольня, что ни библиотека, то свой монастырь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2013, 05:56 |
|
||
|
Обработка исключений отсутствует
|
|||
|---|---|---|---|
|
#18+
MasterZivЭто не так. Если например не выделилась память, а ты это не проверил через какой-то код возврата (да хоть тот же malloc на NULL), то первый же код, который эту память будет использовать, упадёт. Такие же случаи могут быть и с другими видами объектов и функциями.Это просто прекрасно, что сразу упадет. Гораздо хуже, когда внешне прекрасно все работает, но иногда выдает совершенно левые результаты. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2013, 07:05 |
|
||
|
Обработка исключений отсутствует
|
|||
|---|---|---|---|
|
#18+
любой код возвратаАбсолютно везде, где в коде с кодом возврата идет return, в коде с исключениями идет throw(), и наоборот, и следующая строчка не выполнится после любого из них. В любом случае необходимо сначала обработать ошибку.В вызывающем эту функцию коде не выполнится следующая строка, если функция выкинула исключение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2013, 07:12 |
|
||
|
Обработка исключений отсутствует
|
|||
|---|---|---|---|
|
#18+
?любой код возвратаАбсолютно везде, где в коде с кодом возврата идет return, в коде с исключениями идет throw(), и наоборот, и следующая строчка не выполнится после любого из них. В любом случае необходимо сначала обработать ошибку.В вызывающем эту функцию коде не выполнится следующая строка, если функция выкинула исключение. В вызывающем эту функцию коде обязательно надо проверить её код возврата, и если он содержит ошибку, то следующая строка не выполнится, т.к. обязательно делаем break, return, exit... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2013, 12:17 |
|
||
|
Обработка исключений отсутствует
|
|||
|---|---|---|---|
|
#18+
? http://www.transl-gunsmoker.ru/2010/02/blog-post_11.html автор(Да, есть модели программирования типа RAII и транзакций, но вы редко сможете увидеть пример, который бы их использовал) Супер! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2013, 13:41 |
|
||
|
Обработка исключений отсутствует
|
|||
|---|---|---|---|
|
#18+
любой код возврата, ок, возьмите пример из оригинального сообщения Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. теперь представьте, что функции вместо возврата кода ошибки кидают исключения и исправьте код :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2013, 13:50 |
|
||
|
Обработка исключений отсутствует
|
|||
|---|---|---|---|
|
#18+
Да, парни очень правильно рассуждают, но потом в самом-самом конце почему-то делают ровно противоположные к правильным выводы. Ну, на самом деле конечно же ни один из выводов "я буду использовать исключения" или "я не буду использовать исключения" не правильный или неправильный, это скорее вопрос идеологии. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2013, 14:01 |
|
||
|
Обработка исключений отсутствует
|
|||
|---|---|---|---|
|
#18+
?любой код возврата, ок, возьмите пример из оригинального сообщения теперь представьте, что функции вместо возврата кода ошибки кидают исключения и исправьте код :) Пишется обертка над HANDLE которая 1) если хендл инвалидный кидает исключение при попытке его прочесть (operator HANDLE()) 2) если хендл валидный закрывает его в дестукторе. Итого код останется точно таким же. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2013, 14:18 |
|
||
|
Обработка исключений отсутствует
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyИтого код останется точно таким же. :) Даже сократится за счет ненужности CloseHandle :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2013, 14:19 |
|
||
|
Обработка исключений отсутствует
|
|||
|---|---|---|---|
|
#18+
?любой код возврата, ок, возьмите пример из оригинального сообщения Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. теперь представьте, что функции вместо возврата кода ошибки кидают исключения и исправьте код :) Во-первых эти функции не могут кидать исключения, т.к. это код на C, или по крайней мере в C-style, а не C++. Во-вторых этот код не верный, т.к. всегда возвращает true! И не смотря на то, что WinAPI писался для совместимости с C, на RAII и exceptions он в 100 раз более понятный и отлаживаемый - тут уже никак не перепутаешь и не забудешь вызовы CloseHandle/UnmapViewOfFile. В нормальном C++ коде все функции либо уже возвращали бы smart pointers с нужными делитерами, либо вообще все скрывали в конструкторе, как в std::fstream. Теперь приведите этот же код с кодами возврата: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2013, 14:32 |
|
||
|
Обработка исключений отсутствует
|
|||
|---|---|---|---|
|
#18+
Anatoly Moskovsky?любой код возврата, ок, возьмите пример из оригинального сообщения теперь представьте, что функции вместо возврата кода ошибки кидают исключения и исправьте код :) Пишется обертка над HANDLE которая 1) если хендл инвалидный кидает исключение при попытке его прочесть (operator HANDLE()) 2) если хендл валидный закрывает его в дестукторе. Итого код останется точно таким же. :) 1 даже не нужно, т.к. по его условию "функции вместо возврата кода ошибки кидают исключения" :) Но в Ture C++-Style библиотеке это вообще все не нужно, т.к. реализовано и сокрыто в библиотеке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2013, 14:35 |
|
||
|
Обработка исключений отсутствует
|
|||
|---|---|---|---|
|
#18+
в Ture C++-Style библиотеке, Ну все же в вашем коде много синтаксического мусора. То что я предложил, оставляет код буквально таким же как привыкли си-шники, но при этом автоматически возникает обработка ошибок. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2013, 14:44 |
|
||
|
Обработка исключений отсутствует
|
|||
|---|---|---|---|
|
#18+
?любой код возврата, ок, возьмите пример из оригинального сообщения Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. теперь представьте, что функции вместо возврата кода ошибки кидают исключения и исправьте код :) Ну, в этом нет ничего сложного. Только необходимо провести подготовительную работу: - реализовать handle_guard Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. - обрамить winapi вызовы Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. Ну а дальше собственно переписать код Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2013, 14:49 |
|
||
|
Обработка исключений отсутствует
|
|||
|---|---|---|---|
|
#18+
Anatoly Moskovskyв Ture C++-Style библиотеке, Ну все же в вашем коде много синтаксического мусора. То что я предложил, оставляет код буквально таким же как привыкли си-шники, но при этом автоматически возникает обработка ошибок. Ну обертка над HANDLE могла бы в сумме занять чуть больше места, чем исходный код в рамках данного примера, а сторонник кодов возврата бы этого не понял :) Ну и для UnmapViewOfFile() пришлось бы все равно либо отдельную обертку делать, либо как у меня писать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2013, 14:50 |
|
||
|
Обработка исключений отсутствует
|
|||
|---|---|---|---|
|
#18+
в Ture C++-Style библиотеке, Ну естественно суммарный код будет больше, т.к. это должна быть отдельная библиотека, в которой все нужные фичи обернуты в безопасную форму. А если люди не понимают разницу между прикладным и библиотечным кодом, то им доказывать что либо бессмысленно :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2013, 14:57 |
|
||
|
Обработка исключений отсутствует
|
|||
|---|---|---|---|
|
#18+
В принципе можно ещё так упростить :) Код: plaintext 1. 2. 3. 4. 5. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2013, 15:05 |
|
||
|
Обработка исключений отсутствует
|
|||
|---|---|---|---|
|
#18+
можно ещё так упроститьВ принципе можно ещё так упростить :) Показательный пример мощи современного С++. Спасибо. Отличный пример. Мой же пример "дореволюционного подхода" явно многословен, хотя успешно позволял нам писать во времена VC6. Да, прогресс не остановить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2013, 15:11 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=38393551&tid=2019984]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
52ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
| others: | 11ms |
| total: | 156ms |

| 0 / 0 |
