|
|
|
Исключения: за и против
|
|||
|---|---|---|---|
|
#18+
A. Fig Lee[quot Изопропил][quot Aklin] 2) f(&ret); где ret - возвращаемый код ошибки ? сразу видно, что человек С-шник(в хорошем смысле) - предложил указатель, а не ссылку. Теперь понятна настороженность по отношению к исключениям. Не охото менять мышление?;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2007, 22:59 |
|
||
|
Исключения: за и против
|
|||
|---|---|---|---|
|
#18+
MasterZiv Раскрутка стека требует значительного времени : все деструкторы надо вызвать, ну и еще там много всего. Деструкторы работают как обычно . Я даже больше скажу, раскрутка стека на поля классов не влияет что доказывает пример: Код: 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. Или я не правильно понял, то что Вы имели ввиду. Если же исключение брошено в конструкторе , то это вообще отдельная тема , и принятие решения по поводу деструктора на компилятор возлагать тем более нельзя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2007, 03:02 |
|
||
|
Исключения: за и против
|
|||
|---|---|---|---|
|
#18+
ИМХО, у C++ исключений есть один минус - нет стандартного механизма отлова системных ошибок (т.е. независимого от ОС). Исключения, в основном, требовались в ситуациях, когда по-другому можно было выкрутиться только через goto... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2007, 03:58 |
|
||
|
Исключения: за и против
|
|||
|---|---|---|---|
|
#18+
любитель исключений MasterZiv Раскрутка стека требует значительного времени : все деструкторы надо вызвать, ну и еще там много всего. Деструкторы работают как обычно . Я даже больше скажу, раскрутка стека на поля классов не влияет что доказывает пример: Совсем не понятно, что этим примером ты хочешь показать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2007, 09:24 |
|
||
|
Исключения: за и против
|
|||
|---|---|---|---|
|
#18+
daevaorn A. Fig Lee[quot Изопропил][quot Aklin] 2) f(&ret); где ret - возвращаемый код ошибки ? сразу видно, что человек С-шник(в хорошем смысле) - предложил указатель, а не ссылку. Теперь понятна настороженность по отношению к исключениям. Не охото менять мышление?;) Надо уметь пользоваться и тем и тем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2007, 09:44 |
|
||
|
Исключения: за и против
|
|||
|---|---|---|---|
|
#18+
daevaorn любитель исключений MasterZiv Раскрутка стека требует значительного времени : все деструкторы надо вызвать, ну и еще там много всего. Деструкторы работают как обычно . Я даже больше скажу, раскрутка стека на поля классов не влияет что доказывает пример: Совсем не понятно, что этим примером ты хочешь показать. Я хочу спросить, Где и как должен вызываться деструктор? Может не понимаю чего? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2007, 09:59 |
|
||
|
Исключения: за и против
|
|||
|---|---|---|---|
|
#18+
любитель исключенийЯ хочу спросить, Где и как должен вызываться деструктор? Может не понимаю чего? Ааа:) Вот например так: Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2007, 10:08 |
|
||
|
Исключения: за и против
|
|||
|---|---|---|---|
|
#18+
daevaorn любитель исключенийЯ хочу спросить, Где и как должен вызываться деструктор? Может не понимаю чего? Ааа:) Вот например так: Код: 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. Ну так здесь он будет вызван не зависимо от того было исключение или нет. При выходе из области видимости. вот мой доработанный пример: Код: 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. Этот случай у меня сомнений не вызывал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2007, 10:18 |
|
||
|
Исключения: за и против
|
|||
|---|---|---|---|
|
#18+
любитель исключений Ну так здесь он будет вызван не зависимо от того было исключение или нет. Ну так в этом и суть, что деструктор будет вызван в любом случае. Атоматические деструкторы плюс RAII и дают ту мощь исключениям в С++, которая делает их очень удобным и полезным инструментом. Который позволяет писать более безопасный код. любитель исключений При выходе из области видимости. вот мой доработанный пример: Всё равно не понимаю суть твоего явно переусложненного примера:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2007, 10:25 |
|
||
|
Исключения: за и против
|
|||
|---|---|---|---|
|
#18+
daevaorn любитель исключений Ну так здесь он будет вызван не зависимо от того было исключение или нет. Ну так в этом и суть, что деструктор будет вызван в любом случае. Атоматические деструкторы плюс RAII и дают ту мощь исключениям в С++, которая делает их очень удобным и полезным инструментом. Который позволяет писать более безопасный код. любитель исключений При выходе из области видимости. вот мой доработанный пример: Всё равно не понимаю суть твоего явно переусложненного примера:) Да сути небыло, просто было внезапно возникшее ночное желание, что то написать. Книги, обычно, такими примерами не балуют. Может это кому-то поможет понять как работают исключения . А может там есть какая-то фича которую я еще не могу осознать. Если кто знает , поделитесь, где могут еще быть подводные камни? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2007, 10:38 |
|
||
|
Исключения: за и против
|
|||
|---|---|---|---|
|
#18+
Akh daevaorn A. Fig Lee[quot Изопропил][quot Aklin] 2) f(&ret); где ret - возвращаемый код ошибки ? сразу видно, что человек С-шник(в хорошем смысле) - предложил указатель, а не ссылку. Теперь понятна настороженность по отношению к исключениям. Не охото менять мышление?;) Надо уметь пользоваться и тем и тем. +1 а пример из серии "все правильно сделал" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2007, 11:59 |
|
||
|
Исключения: за и против
|
|||
|---|---|---|---|
|
#18+
daevaorn A. Fig Lee[quot Изопропил][quot Aklin] 2) f(&ret); где ret - возвращаемый код ошибки ? сразу видно, что человек С-шник(в хорошем смысле) - предложил указатель, а не ссылку. Теперь понятна настороженность по отношению к исключениям. Не охото менять мышление?;) ето другое. Выработалась привычка писать, чтоб компилировалось все на как можно больше платформ, компайлеров и языков. Сейчас в основном - С, но фронт-енд - С++. До етого С++ был значительно больше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2007, 18:47 |
|
||
|
Исключения: за и против
|
|||
|---|---|---|---|
|
#18+
ErVИсключения, в основном, требовались в ситуациях, когда по-другому можно было выкрутиться только через goto... Откуда такие данные? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2007, 09:49 |
|
||
|
Исключения: за и против
|
|||
|---|---|---|---|
|
#18+
Akh ErVИсключения, в основном, требовались в ситуациях, когда по-другому можно было выкрутиться только через goto... Откуда такие данные? Сишный аналог исключений. man setjmp, sigsetjmp - save stack context for non-local goto longjmp, siglongjmp - non-local jump to a saved stack context ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2007, 10:27 |
|
||
|
Исключения: за и против
|
|||
|---|---|---|---|
|
#18+
Вспомнил еще один момент где без исключений тяжело. Если функция должна возвращить указатель, а вернуть его не может. Возвращать NULL, а потом его за каждым вызовом проверять, не лучший выход. У меня при переходе на исключения количество неприятностей связанных с возвратом указателей сократилась раз в 5. Соответственно возросла скорость отладки кода. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2007, 21:00 |
|
||
|
Исключения: за и против
|
|||
|---|---|---|---|
|
#18+
onstat-Вспомнил еще один момент где без исключений тяжело. Если функция должна возвращить указатель, а вернуть его не может. Возвращать NULL, а потом его за каждым вызовом проверять, не лучший выход.Почему??? Что может быть проще: Код: plaintext 1. 2. Код: plaintext 1. 2. 3. 4. 5. onstat-У меня при переходе на исключения количество неприятностей связанных с возвратом указателей сократилась раз в 5.Это неприятности не с возвратом указателей, а элементарный склероз. Если функция может упасть и это падение нельзя игнорировать, значит его нельзя игнорировать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2007, 22:42 |
|
||
|
Исключения: за и против
|
|||
|---|---|---|---|
|
#18+
White Owl onstat-Вспомнил еще один момент где без исключений тяжело. Если функция должна возвращить указатель, а вернуть его не может. Возвращать NULL, а потом его за каждым вызовом проверять, не лучший выход.Почему??? Что может быть проще: Код: plaintext 1. 2. Код: plaintext 1. 2. 3. 4. 5. Стоит упомянуть что , в подавляющем большенстве случаев указатель не возвращается ради указателя как такового. Следственно Код: plaintext Код: plaintext минимум на один уровень выше. Если решение можно принять на этом уровне, то понятное дело с исключениями завязываться смысла нет. White Owl onstat-У меня при переходе на исключения количество неприятностей связанных с возвратом указателей сократилась раз в 5.Это неприятности не с возвратом указателей, а элементарный склероз. Если функция может упасть и это падение нельзя игнорировать, значит его нельзя игнорировать. Конечно не без этого, люядм свойственно заблуждаться и ошибаться. Не ошибается тот кто ничего не делает. Я выводы из своих ошибок делаю постоянно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2007, 10:16 |
|
||
|
Исключения: за и против
|
|||
|---|---|---|---|
|
#18+
похоже две религии всё-таки сумели договриться? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2007, 10:40 |
|
||
|
Исключения: за и против
|
|||
|---|---|---|---|
|
#18+
onstat- пишет: > Если функция должна возвращить указатель, а вернуть его не может. Нет, не правильно. Это если функция возвращает ССЫЛКУ, а вернуть она ничего не может. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2007, 20:50 |
|
||
|
Исключения: за и против
|
|||
|---|---|---|---|
|
#18+
White Owl пишет: > Почему??? > Что может быть проще: > > if(! (some_pointer = some_function())) { > cout<< "error"; > } Оул, ты законченный ретроград. > А с исключениями ты будешь писать > > try { > some_pointer = some_function(); > } > catch(someexception e) { > cout << "error"; > } С исключениями не надо этого писать. Это надо писать один раз в главной функции, а в этом месте вообще об этом думать не надо. Это конечно если по семантике some_function() должен возвращать ссылку. > Писать с исключениями больше Меньше, ты просто не догоняешь. и код обработки ошибки находится далеко от > кода который может эту ошибку создать. Да, и это ПРАВИЛЬНО! Это - КЛЕВО!. > Это неприятности не с возвратом указателей, а элементарный склероз. Если > функция может упасть и это падение нельзя игнорировать, значит его > нельзя игнорировать. Если функция может попась в ситуацию, когда она НЕ МОЖЕТ вернуть то, что она должна вернуть согласно своей спецификации, надо кидать исключение. Это позволяет не писать код обработки ошибок, который в противном случае вообще никогда не будет работать в отлаженном и выпущенном приложении. И это правильно. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2007, 20:56 |
|
||
|
Исключения: за и против
|
|||
|---|---|---|---|
|
#18+
White Owl пишет: > if(! (some_pointer = some_function())) { > cout<< "error"; > } Кстати, ты уверен, что пользователь будет счастлив, увидев такое на экране ? Уверен, что он вообще что-то поймет ? Уверен, что тут надо выводить именно в консоль, а не например вызывать MessageBox или еще что-то ? Исключения позволяют избавиться от всех этих проблем просто и элегантно, перенося обработку ошибок в то место, где она может быть сделана должным образом. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2007, 21:00 |
|
||
|
Исключения: за и против
|
|||
|---|---|---|---|
|
#18+
MasterZiv Если функция может попась в ситуацию, когда она НЕ МОЖЕТ вернуть то, что она должна вернуть согласно своей спецификации, надо кидать исключение. Это позволяет не писать код обработки ошибок, который в противном случае вообще никогда не будет работать в отлаженном и выпущенном приложении. И это правильно. Posted via ActualForum NNTP Server 1.4 Не понял, что здесь не правильно : MasterZiv автор > Если функция должна возвращить указатель, а вернуть его не может. Нет, не правильно . Это если функция возвращает ССЫЛКУ, а вернуть она ничего не может. Единственное что приходит на ум, если с указателем еще можно как то выкрутиться, то с невалидной ссылкой никак. (Хотя тоже можно, но это будет извращение на уровне сумашествия ). 2 selinoth: Попробуйте показать случай с обработкой невалидной ссылки или указателя ПМ-у и посмотрите на его реакцию. Интересно, как он предложит Вам выйти из ситуации( особенно в случае со ссылкой). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2007, 10:40 |
|
||
|
Исключения: за и против
|
|||
|---|---|---|---|
|
#18+
MasterZivОул, ты законченный ретроград. Вовсе нет. Я всегда с интересом смотрю на новые принципы и если они мне нравятся начинаю использовать :) MasterZiv> Писать с исключениями больше Меньше, ты просто не догоняешь. > и код обработки ошибки находится далеко от > кода который может эту ошибку создать. Да, и это ПРАВИЛЬНО! Это - КЛЕВО!. Ну если это правильно и клево, покажи мне реальную задачу решеную через исключения и чтоб это решение было удобнее чем решение через коды возврата. Вот man_555 очень любит исключения, но показать такую реальную задачу не смог. Может ты сможешь? MasterZivЕсли функция может попась в ситуацию, когда она НЕ МОЖЕТ вернуть то, что она должна вернуть согласно своей спецификации, надо кидать исключение. Это позволяет не писать код обработки ошибок, который в противном случае вообще никогда не будет работать в отлаженном и выпущенном приложении. И это правильно.Бррр.. Ну что значит "не писать код обработки ошибок"? Ты в любом случае будешь писать код обработки ошибки или код обработки исключения. В чем разница то? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2007, 17:58 |
|
||
|
Исключения: за и против
|
|||
|---|---|---|---|
|
#18+
White Owl Ну если это правильно и клево, покажи мне реальную задачу решеную через исключения и чтоб это решение было удобнее чем решение через коды возврата. Вот man_555 очень любит исключения, но показать такую реальную задачу не смог. Может ты сможешь? Как вариант: Выход из тупиков и бесконечных циклов при обработке графов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2007, 20:58 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=34365018&tid=2029270]: |
0ms |
get settings: |
10ms |
get forum list: |
21ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
164ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
91ms |
get tp. blocked users: |
1ms |
| others: | 245ms |
| total: | 553ms |

| 0 / 0 |
