История изменений
Исправление x86_64, (текущая версия) :
[[nodiscard]]
До этого момента можно пользоваться. [[gnu::warn_unused_result]]
clang то же умеет.
По сути, если ты обрабатываешь код возврата через switch, то у тебя обязан быть default, иначе что-то пропустишь.
Это то же обрабатывается. Да. Для каждой функции с несколькими вариантами отказов придется свой enum писать. Но в них можно константы со сквозной нумерацией. И да. Большинство функций возвращают только один вариант отказа, который и надо обработать.
catch(some_base_exception& ex) перехватит всё, что вылетит (при условии, что все исключения наследуются от some_base_exception). Т.к. это что-то не ожидавшееся тобой, то трактовать его надо как невосстановимое исключение.
Проблема как всегда не в написании кода с исключениями. А в рефакторинге кода, у которого глубоко внутри исключения. Разработчики gcc не зря от использования исключений при разработке gcc отказались. Для больших проектов их применять нецелесообразно, а ядро - большой проект.
Исправление x86_64, :
[[nodiscard]]
До этого момента можно пользоваться. [[gnu::warn_unused_result]]
clang то же умеет.
По сути, если ты обрабатываешь код возврата через switch, то у тебя обязан быть default, иначе что-то пропустишь.
Это то же обрабатывается. Да. Для каждой функции с несколькими вариантами отказов придется свой enum писать. Но в них можно константы со сквозной нумерацией. И да. Большинство функций возвращают только один вариант отказа, который и надо обработать.
catch(some_base_exception& ex) перехватит всё, что вылетит (при условии, что все исключения наследуются от some_base_exception). Т.к. это что-то не ожидавшееся тобой, то трактовать его надо как невосстановимое исключение.
Проблема как всегда не в написании кода с исключениями. А в рефакторинге кода, у кторого глубоко внутри исключения. Разработчики gcc не зря от использования исключений при разработки gcc отказались. Для больших проектов их применять нецелесообразно, а ядро - большой проект.
Исправление x86_64, :
[[nodiscard]]
До этого момента можно пользоваться. [[gnu::warn_unused_result]]
clang то же умеет.
По сути, если ты обрабатываешь код возврата через switch, то у тебя обязан быть default, иначе что-то пропустишь.
Это то же обрабатывается. Да. Для каждой функции с несколькими вариантами отказов придется свой enum писать. Но в них можно константы со сковзной нумерацией. И да. Большинство функций возвращают только один вариант отказа, который и надо обработать.
catch(some_base_exception& ex) перехватит всё, что вылетит (при условии, что все исключения наследуются от some_base_exception). Т.к. это что-то не ожидавшееся тобой, то трактовать его надо как невосстановимое исключение.
Проблема как всегда не в написании кода с исключениями. А в рефакторинге кода, у кторого глубоко внутри исключения. Разработчики gcc не зря от использование исключений при разработки gcc отказались. Для больших проектов их применять нецелесообразно, а ядро - большой проект.
Исправление x86_64, :
[[nodiscard]]
До этого момента можно пользоваться. [[gnu::warn_unused_result]]
clang то же умеет.
По сути, если ты обрабатываешь код возврата через switch, то у тебя обязан быть default, иначе что-то пропустишь.
Это то же обрабатывается. Да. Для каждой функции с несколькими вариантами отказов придется свой enum писать. Но в них можно константы со сковзной нумерацией. И да. Большинство функций возвращают только один вариант отказа, который и надо обработать.
catch(some_base_exception& ex) перехватит всё, что вылетит (при условии, что все исключения наследуются от some_base_exception). Т.к. это что-то не ожидавшееся тобой, то трактовать его надо как невосстановимое исключение.
Проблема как всегда не в написании кода с исключениями. А в рефакторинге кода, у кторого глубоко внутри исключения. Разработчики gcc не зря от использование исключения при разработки gcc отказались. Для больших проектов их применять нецелесообразно, а ядро - большой проект.
Исправление x86_64, :
[[nodiscard]]
До этого момента можно пользоваться. [[gnu::warn_unused_result]]
clang то же умеет.
По сути, если ты обрабатываешь код возврата через switch, то у тебя обязан быть default, иначе что-то пропустишь.
Это то же обрабатывается. Да. Для каждой функции с несколькими вариантами отказов придется свой enum писать. Но в них можно константы со сковзной нумерацией. И да. Большинство функций возвращают только один вариант отказа, который и надо обработать.
catch(some_base_exception& ex) перехватит всё, что вылетит (при условии, что все исключения наследуются от some_base_exception). Т.к. это что-то не ожидавшееся тобой, то трактовать его надо как невосстановимое исключение.
Проблема как всегда не в написании кода с исключениями. А рефакторинге кода, у кторого глубоко внутри исключения. Разработчики gcc не зря от использование исключения при разработки gcc отказались. Для больших проектов их применять нецелесообразно, а ядро - большой проект.
Исправление x86_64, :
[[nodiscard]]
До этого момента можно пользоваться. [[gnu::warn_unused_result]]
clang то же умеет.
По сути, если ты обрабатываешь код возврата через switch, то у тебя обязан быть default, иначе что-то пропустишь.
Это то же обрабатывается. Да. Для каждой функции с несколькими вариантами отказов придется свой enum писать. Но в них можно константы со сковзной нумерацией. И да. Большинство функций возвращают только один вариант отказа, который и надо обработать.
catch(some_base_exception& ex) перехватит всё, что вылетит (при условии, что все исключения наследуются от some_base_exception). Т.к. это что-то не ожидавшееся тобой, то трактовать его надо как невосстановимое исключение.
Проблема как всегда не написании кода с исключениями. А рефакторинге кода, у кторого глубоко внутри исключения. Разработчики gcc не зря от использование исключения при разработки gcc отказались. Для больших проектов их применять нецелесообразно, а ядро - большой проект.
Исходная версия x86_64, :
[[nodiscard]]
До этого момента можно пользоваться. [[gnu::warn_unused_result]]
clang то же умеет.
По сути, если ты обрабатываешь код возврата через switch, то у тебя обязан быть default, иначе что-то пропустишь.
Это то же обрабатывается. Да. Для каждой функции с несколькими вариантами отказов придется свой enum писать. Но в них можно константы по со сковзной нумерацией. И да. Большинство функций возвращают только один вариант отказа, который и надо обработать.
catch(some_base_exception& ex) перехватит всё, что вылетит (при условии, что все исключения наследуются от some_base_exception). Т.к. это что-то не ожидавшееся тобой, то трактовать его надо как невосстановимое исключение.
Проблема как всегда не написании кода с исключениями. А рефакторинге кода, у кторого глубоко внутри исключения. Разработчики gcc не зря от использование исключения при разработки gcc отказались. Для больших проектов их применять нецелесообразно, а ядро - большой проект.