альтернативы обработке исключений для освобождения ресурсов

0

Я узнал о том, как писать безопасный код исключения. Большинство методов, предлагаемых как управляемая память RAI или мьютексы, полезны даже тогда, когда мы не используем исключения, поскольку программисту не нужно беспокоиться об управлении ресурсами вручную.

Но зачем нам нужны исключения? Если мы не получим нужные нам ресурсы, мы не сможем продолжить работу, и процесс все равно прекратится. Тогда операционная система может беспокоиться о выпуске ресурсов. Итак, что мне не хватает? что не так с моим аргументом?

  • 0
    Исключение используется в условии, которое вы хотите восстановить или повторить попытку.
  • 0
    Вы предполагаете, что исключение прекратит работу программы. Конечно, нет смысла что-либо убирать. То, о чем вы должны беспокоиться, это то, что он не завершает программу. Другими словами, когда предложение catch () ловит его и оставляет программу запущенной. Тогда вам лучше убедиться, что любые объекты, которые вышли из области видимости при размотке стека, будут уничтожены, иначе у вас будет утечка памяти. Да, RAII - правильный шаблон.
Теги:
exception-handling

1 ответ

2
Лучший ответ

Вы считаете само собой разумеющимся, что программа не может двигаться дальше, когда ей не хватает ресурсов.

Если позволить программе просто умереть, это вариант, тогда вам могут не понадобиться исключения. Опять же, вы можете извлечь из них выгоду даже в таком случае - бросая исключение, чтобы вещи были очищены, поэтому (например) файлы, которые вы написали, будут очищены, чтобы вы не потеряли данные, которые все еще находятся в буферах.

В еще нескольких случаях просто возврат к ОС не является вариантом. В нескольких случаях вы хотели бы использовать ресурс, если это возможно, но вам все равно нужно продолжать обработку, даже если это не так.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню