LINUX.ORG.RU

История изменений

Исправление 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 отказались. Для больших проектов их применять нецелесообразно, а ядро - большой проект.