История изменений
Исправление eao197, (текущая версия) :
Так, мы говорим про плюсы или про ржавчину? В последней вообще никак не выйдет забыть проверку, а в плюсах должны быть включены предупреждения о неиспльзуемом возвращаемом значении, не?
Очевидно, что когда исключения противопоставляются кодам возврата, то речь идет о языках, где есть и то, и другое. В данном разговоре о C++. Но, полагаю, аналогичная ситуация будет и в каком-нибудь Ruby или C#. Т.к. в Rust исключений нет, то там и дилеммы такой нет.
И я так и не понял, каких конкретно элементарных вещей я, по-твоему, не понимаю :( .
Вот тех, которые пришлось несколько раз объяснять, прежде чем вы догадались:
Ммм, ок, я тебя не так понял. Да, конечно, там где нужно сохранять инфарианты - их придется сохранять. И без исключений кода потребуется не меньше, а то и больше - тож правда.
Ну и вот это:
Только вот я в самом коде сразу видно, когда это надо делать. А с исключениями надо вечно помнить, какая функция что может бросить.
Не правильно. Достаточно знать только о тех функциях, которые не должны бросать исключений (например, swap и деструкторы, а сейчас, может еще и move operator/move constructor, впрочем на счет последних утверждать не буду, т.к. сам еще не разобрался).
Исправление eao197, :
Так, мы говорим про плюсы или про ржавчину? В последней вообще никак не выйдет забыть проверку, а в плюсах должны быть включены предупреждения о неиспльзуемом возвращаемом значении, не?
Очевидно, что когда исключения противопоставляются кодам возврата, то речь идет о языках, где есть и то, и другое. В данном разговоре о C++. Но, полагаю, аналогичная ситуация будет и в каком-нибудь Ruby или C#. Т.к. в Rust исключений нет, то там и дилеммы такой нет.
И я так и не понял, каких конкретно элементарных вещей я, по-твоему, не понимаю :( .
Вот о тех, которые пришлось несколько раз объяснять, прежде чем вы догадались:
Ммм, ок, я тебя не так понял. Да, конечно, там где нужно сохранять инфарианты - их придется сохранять. И без исключений кода потребуется не меньше, а то и больше - тож правда.
Ну и вот это:
Только вот я в самом коде сразу видно, когда это надо делать. А с исключениями надо вечно помнить, какая функция что может бросить.
Не правильно. Достаточно знать только о тех функциях, которые не должны бросать исключений (например, swap и деструкторы, а сейчас, может еще и move operator/move constructor, впрочем на счет последних утверждать не буду, т.к. сам еще не разобрался).
Исходная версия eao197, :
Так, мы говорим про плюсы или про ржавчину? В последней вообще никак не выйдет забыть проверку, а в плюсах должны быть включены предупреждения о неиспльзуемом возвращаемом значении, не?
Очевидно, что когда исключения противопоставляются кодам возврата, то речь идет о языках, где есть и то, и другое. В данном разговоре о C++. Но, полагаю, аналогичная ситуация будет и каком-нибудь Ruby или C#. Т.к. в Rust исключений нет, то там и дилеммы такой нет.
И я так и не понял, каких конкретно элементарных вещей я, по-твоему, не понимаю :( .
Вот о тех, которые пришлось несколько раз объяснять, прежде чем вы догадались:
Ммм, ок, я тебя не так понял. Да, конечно, там где нужно сохранять инфарианты - их придется сохранять. И без исключений кода потребуется не меньше, а то и больше - тож правда.
Ну и вот это:
Только вот я в самом коде сразу видно, когда это надо делать. А с исключениями надо вечно помнить, какая функция что может бросить.
Не правильно. Достаточно знать только о тех функциях, которые не должны бросать исключений (например, swap и деструкторы, а сейчас, может еще и move operator/move constructor, впрочем на счет последних утверждать не буду, т.к. сам еще не разобрался).