Yes, but that's not a dichotomy. Languages like Java have function declare what exceptions they throw, and the caller must either catch it or also declare that it throws it. Gets cumbersome quickly, but I believe it's for the best to encode exceptions at the type system.
Unchecked exceptions will eventually lead into programs crashing because some developer forgot to catch specific type of exception somewhere.
And developers never forget to check error codes.
Looking at code, it‘s easier to spot the missing check for an error code, than a not catched exceptions.
Also error codes are part of the signature of a function, which exceptions aren‘t.
1 reply →
may I introduce you to the nodiscard attribute[1]?
[1]: https://en.cppreference.com/w/cpp/language/attributes/nodisc...
3 replies →
That seems like a better outcome than continuing when an error happened while thinking everything succeeded?
Yes, but that's not a dichotomy. Languages like Java have function declare what exceptions they throw, and the caller must either catch it or also declare that it throws it. Gets cumbersome quickly, but I believe it's for the best to encode exceptions at the type system.