3 ms·
You can indeed live without them. In C++, the trade-off is that you are now responsible for manually writing and maintaining any and all error propagation code,
by usefulcat 10y ago
You can indeed live without them. In C++, the trade-off is that you are now responsible for manually writing and maintaining any and all error propagation code, including remembering to check every relevant return value.
- humanrebar 10y ago> ...including remembering to check every relevant return value. To be fair, there are compiler flags to check this. And if not, there are static analysis tools that do the same.
- mattkrause 10y agoI was slightly amazed I had never heard of such a thing, but sure enough, it does exist: It's -Wunused-result on gcc (https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html). You still need to manually add the warn_unused_result attribute to each function though. There's also the [[nodiscard]] attribute of c++17.
- npatrick04 10y agoPlus you're pretty much screwed on RAII since you cannot return a value from the initializer. So by not using exceptions in C++, you also will often end up requiring a separate init function that can return errors.