История изменений
Исправление Kroz, (текущая версия) :
1. Исключения работают быстро. Очень быстро, даже быстрее логики на if. Пруф.
2. У тебя проблема в логике программы.
Деструктор должен вызваться всегда, когда он должен вызываться. Например, если у тебя локальная переменная-объект в функции, то при выходе из функции должен вызываться ее деструктор; и не важно, это return или throw. И это правильно.
Но вот в деструкторах, ты, скорее всего делаешь слишком много.
Я бы перепроверил бы что так много занимает времени. Если это соединения с клиентом - может не нужно их так часто открывать/закрывать? Может закрывать более жестко, как сделала бы ОС, если программу убить по kill -9? Если нет - может вынести логику открытия/закрытия соединения в глобальный объект «controller», который бы работал в отдельном треде, или завершал всё в какой-то другой точке программы, куда не так часто долетают исключения (да, это аналог сборщика мусора).
Если ты рассматриваешь вариант с «отключением исключений», значит без них можно обойтись (в смысле совсем обойтись, даже без if), значит у тебе в программе «логика на исключениях», что плохо.
Мне выгодней упасть и перезапуститься пусть ОС сама освобождает все ресурсы, чем ждать когда отработают все деструкторы.
Значит в деструкторах ты делаешь что-то лишнее.
Мне выгодней упасть и перезапуститься
Вот и родился еще один антипаттерн.
Сейчас пойдет поколение программ, которые опираются на авто-хилинги. (Продолжать не буду, остались одни нецензурные слова).
Исправление Kroz, :
1. Исключения работают быстро. Очень быстро, даже быстрее логики на if. Пруф.
2. У тебя проблема в логике программы.
Деструктор должен вызваться всегда, когда он должен вызываться. Например, если у тебя локальная переменная-объект в функции, то при выходе из функции должен вызываться ее деструктор; и не важно, это return или throw. И это правильно.
Но вот в деструкторах, ты, скорее всего делаешь слишком много.
Я бы перепроверил бы что так много занимает времени. Если это соединения с клиентом - может не нужно их так часто открывать/закрывать? Может закрывать более жестко, как сделала бы ОС, если программу убить по kill -9? Если нет - может вынести логику открытия/закрытия соединения в глобальный объект «controller», который бы работал в отдельном треде, или завершал всё в какой-то другой точке программы, куда не так часто долетают исключения (да, это аналог сборщика мусора).
Если ты рассматриваешь вариант с «отключением исключений», значит без них можно обойтись (в смысле совсем обойтись, даже без if), значит у тебе в программе «логика на исключениях», что плохо.
Мне выгодней упасть и перезапуститься пусть ОС сама освобождает все ресурсы, чем ждать когда отработают все деструкторы.
Значит в деструкторах ты делаешь что-то лишнее.
Мне выгодней упасть и перезапуститься
Вот и родился еще один антипаттерн.
Сейчас пойдет поколение программ, которые опираются на авто-хилинги. (Дальше остались одни нецензурные слова).
Исправление Kroz, :
1. Исключения работают быстро. Очень быстро, даже быстрее логики на if. Пруф.
2. У тебя проблема в логике программы.
Деструктор должен вызваться всегда, когда он должен вызываться. Например, если у тебя локальная переменная-объект в функции, то при выходе из функции должен вызываться ее деструктор; и не важно, это return или throw. И это правильно.
Но вот в деструкторах, ты, скорее всего делаешь слишком много.
Я бы перепроверил бы что так много занимает времени. Если это соединения с клиентом - может не нужно их так часто открывать/закрывать? Может закрывать более жестко, как сделала бы ОС, если программу убить по kill -9? Если нет - может вынести логику открытия/закрытия соединения в глобальный объект «controller», который бы работал в отдельном треде, или завершал всё в какой-то другой точке программы, куда не так часто долетают исключения (да, это аналог сборщика мусора).
Если ты рассматриваешь вариант с «отключением исключений», значит без них можно обойтись (в смысле совсем обойтись, даже без if), значит у тебе в программе «логика на исключениях», что плохо.
Мне выгодней упасть и перезапуститься пусть ОС сама освобождает все ресурсы, чем ждать когда отработают все деструкторы.
Значит в деструкторах ты делаешь что-то лишнее.
Исходная версия Kroz, :
1. Исключения работают быстро. Очень быстро, даже быстрее логики на if. Пруф.
2. У тебя проблема в логике программы.
Деструктор должен вызваться всегда, когда он должен вызываться. Например, если у тебя локальная переменная-объект в функции, то при выходе из функции должен вызываться ее деструктор; и не важно, это return или throw. И это правильно.
Но вот в деструкторах, ты, скорее всего делаешь слишком много.
Я бы перепроверил бы что так много занимает времени. Если это соединения с клиентом - может не нужно их так часто открывать/закрывать? Если нет - может вынести логику открытия/закрытия соединения в глобальный объект «controller», который бы работал в отдельном треде, или завершал всё в какой-то другой точке программы, куда не так часто долетают исключения (да, это аналог сборщика мусора).
Если ты рассматриваешь вариант с «отключением исключений», значит без них можно обойтись (в смысле совсем обойтись, даже без if), значит у тебе в программе «логика на исключениях», что плохо.
Мне выгодней упасть и перезапуститься пусть ОС сама освобождает все ресурсы, чем ждать когда отработают все деструкторы.
Значит в деструкторах ты делаешь что-то лишнее.