|
|
|
__try __finally и C++
|
|||
|---|---|---|---|
|
#18+
Всем доброго дня! Скажите, а какие альтернативы "__try __finally" есть в C++?? try cath except подойдет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2006, 11:15 |
|
||
|
__try __finally и C++
|
|||
|---|---|---|---|
|
#18+
Павел. СВсем доброго дня! Скажите, а какие альтернативы "__try __finally" есть в C++?? try cath except подойдет? в принципе, да ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2006, 11:21 |
|
||
|
__try __finally и C++
|
|||
|---|---|---|---|
|
#18+
А среда разработки у Вас какая? По стандарту должны быть: Код: plaintext 1. 2. Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2006, 11:25 |
|
||
|
__try __finally и C++
|
|||
|---|---|---|---|
|
#18+
Но как мне выйти из блока try{} принудительно??? Например, при работе программы обнаружилась ошибка, но никаких исключительных ситуаций не возникает, а мне нужно пропустить то, что осталось в блоке try{} и перейти на завершающий код (чистит память, хендлцы и.т.д.) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2006, 11:26 |
|
||
|
__try __finally и C++
|
|||
|---|---|---|---|
|
#18+
Среда разработки - M$ VC ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2006, 11:28 |
|
||
|
__try __finally и C++
|
|||
|---|---|---|---|
|
#18+
Можешь сам сгененерить исключение. Можешь, выйти ретурном. На счет чистки памяти. В С++ нет finaly. Наиболее простой способ управления памяти - создание статических объектов в блоке try. Тогда память автоматически очистится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2006, 11:37 |
|
||
|
__try __finally и C++
|
|||
|---|---|---|---|
|
#18+
Павел. СНо как мне выйти из блока try{} принудительно??? Ни понил! Зачем это??? Павел. СНапример, при работе программы обнаружилась ошибка, но никаких исключительных ситуаций не возникает, а мне нужно пропустить то, что осталось в блоке try{} и перейти на завершающий код (чистит память, хендлцы и.т.д.) Во-первых: нужно помнить важное правило - использовать try{} для обнаружения действительно исключительных ситуаций! Во-вторых: такую ошибку обрабатывать с помощью: Код: plaintext 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2006, 11:39 |
|
||
|
__try __finally и C++
|
|||
|---|---|---|---|
|
#18+
Павел. СЧтобы было понятнее, поясните задачу - какие ошибки собираетесь отлавливать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2006, 11:41 |
|
||
|
__try __finally и C++
|
|||
|---|---|---|---|
|
#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. Вот, думаю понятно)) Смысл в чем... Если возникает какая-либо ошибка в программе (логическая, сама программа решает что это ошибка) мне нужно обязательно грамотно завершить выполнение. (в данном примере -перейти на метку exit) Неужели нужно постоянно использовать if () else()??? А если код завершения имеет большой объем?? Вобщем в С есть для этого конструкция __try __leave __finally. Нужен аналог для CPP. Всем спасибо за помощь! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2006, 12:16 |
|
||
|
__try __finally и C++
|
|||
|---|---|---|---|
|
#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. или же не использовать except tra_ly_ly; , часть обработки ошибки перенести после catch. Еще вариант, делать для каждой someFuncX() отдельный try{}. И желательно все операции целостности инкапсулировать в каждом блоке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2006, 12:47 |
|
||
|
__try __finally и C++
|
|||
|---|---|---|---|
|
#18+
А может проще код видоизменить так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. I Live Again! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2006, 03:46 |
|
||
|
__try __finally и C++
|
|||
|---|---|---|---|
|
#18+
Либо если функций типа SomeFunctionCall_xx туева хуча, я бы разбил твой код на две функции: Код: 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. I Live Again! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2006, 03:59 |
|
||
|
__try __finally и C++
|
|||
|---|---|---|---|
|
#18+
Запихать все хендлы и поинтеры внутрь класса, экземпляр которого (не указатель!) создается как локальная переменная в функции. В деструкторе этого класса всё закрывать/освобождать. Вместо goto - просто return. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2006, 09:04 |
|
||
|
__try __finally и C++
|
|||
|---|---|---|---|
|
#18+
Хорошая идея! Всем спасибо за советы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2006, 10:37 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=34108827&tid=2030099]: |
0ms |
get settings: |
9ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
188ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
| others: | 211ms |
| total: | 498ms |

| 0 / 0 |
