История изменений
Исправление cvv, (текущая версия) :
Eдинственный реально работающий варинат exception safety, это:
#define throw *((nullptr*)0) = 0; #define try *((nullptr*)0) = 0; #define catch *((nullptr*)0) = 0;
Тут, конечно, большой простор для улучшения, чтобы ошибки все-таки из runtime сдвинуть в сторону compile time, но суть, думаю понятна: никогда и ни при каких условиях не бросать и не ловить исключения.
Плюсую. Вот Oна - железо-бетонная реализация исключений для С++.
Исправление cvv, :
Eдинственный реально работающий варинат exception safety, это:
#define throw *((nullptr*)0) = 0; #define try *((nullptr*)0) = 0; #define catch *((nullptr*)0) = 0;
Тут, конечно, большой простор для улучшения, чтобы ошибки все-таки из runtime сдвинуть в сторону compile time, но суть, думаю понятна: никогда и ни при каких условиях не бросать и не ловить исключения.
Плюсую. Вот она железо-бетонная реализация исключений для С++.
Исходная версия cvv, :
Eдинственный реально работающий варинат exception safety, это:
#define throw *((nullptr*)0) = 0; #define try *((nullptr*)0) = 0; #define catch *((nullptr*)0) = 0;
Тут, конечно, большой простор для улучшения, чтобы ошибки все-таки из runtime сдвинуть в сторону compile time, но суть, думаю понятна: никогда и ни при каких условиях не бросать и не ловить исключения.
Плюсую. Вот она железо-бетонная реализация исключений для С++.