LINUX.ORG.RU

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

Исправление 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, впрочем на счет последних утверждать не буду, т.к. сам еще не разобрался).