| ▲ | nomel 2 hours ago | ||||||||||||||||
How so? An exception is a value that's given the closest, conceptually appropriate, point that was decided to handle the value, allowing you to keep your "happy path" as clean code, and your "exceptional circumstances" path at the level of abstraction that makes sense. It's way less book-keeping with exceptions, since you, intentionally, don't have to write code for that exceptional behavior, except where it makes sense to. The return by value method, necessarily, implements the same behavior, where handling is bubbled up to the conceptually appropriate place, through returns, but with much more typing involved. Care is required for either, since not properly bubbling up an exception can happen in either case (no re-raise for exceptions, no return after handling for return). | |||||||||||||||||
| ▲ | yoyohello13 2 hours ago | parent | next [-] | ||||||||||||||||
There are many many pages of text discussing this topic, but having programmed in both styles, exceptions make it too easy for programmer to simply ignore them. Errors as values force you to explicitly handle it there, or toss it up the stack. Maybe some other languages have better exception handling but in Python it’s god awful. In big projects you can basically never know when or how something can fail. | |||||||||||||||||
| |||||||||||||||||
| ▲ | pyrolistical 2 hours ago | parent | prev [-] | ||||||||||||||||
Exception is hidden control flow, where as error values are not. That is the main reason why zig doesn’t have exceptions. | |||||||||||||||||
| |||||||||||||||||