|
|
|
|
|
by pagghiu
876 days ago
|
|
> No, instead of using std::exception, serenity has ErrorOr template. C’mon, that’s basically the same thing. I think that handling errors with ErrorOr<T,E> or similar techniques (I use something similar too) is very different from exception handling. My main problems with exception handling are: 1. It's not zero-overhead (brings in RTTI often)
2. You can't know if a function throws something by looking at its signature
3. You don't know what types exceptions a function can throw
4. It doesn't force users to handle errors that can happen, leading tomore "happy path" style code Something like ErrorOr or similar with [[nodiscard]] ticks all the above 4 points. |
|
ErrorOr is a better design for things to be deterministic. The point I was trying to make is that exceptions are errors and error handling and exception handling (while implemented differently) are essentially the same thing. In C++ std::exception is “exceptions” and everything else is “pretty error”. It doesn’t matter how the house is decorated. Exceptions = Errors = Oopsies = NotIntendedState