You can think of it that way - sure. If you want a deeper insight into development I'd just consider it a form of conditional switching. I think back to washing ores in SeaBlock (you're running recipes that could output one of like six things and sushi-ing is the only real recourse). Some filters might be dealing with success cases, some might be error cases - they aren't really treated any different at a basic level. The data needs to go where it's supposed to and exceptions (excepting unhandled ones) aren't really any different than any other status response.
Many operations can return multiple states, a "correct" usage of that operation is being able to handle all of those states in a reasonable and planned manner.