3 ms·
Recently I came up with a related idea for repeated error handling code, in the usual Python vein of introducing an abstraction to save 2-3 lines: try:
by formerly_proven 6y ago
Recently I came up with a related idea for repeated error handling code, in the usual Python vein of introducing an abstraction to save 2-3 lines:
try:
foobar
delegate handle_stuff:
delegate handler_factory(something):
except Foo:
...
else:
...
finally
...
Where "delegate handle_stuff" means that for any exception handle_stuff is called with the exception tuple and the exception is considered handled if it returns truthy. "delegate" of course takes an expression so that you can have Proper Adult Fun Handling Exceptions.
- mfgs 6y agoHow is that ultimately different from handling the exception under `except`?
- coldtea 6y ago"in the usual Python vein of introducing an abstraction to save 2-3 lines"
- ledauphin 6y agothis is what abstractions are for. they can be done poorly or well, but there's a reason iterators are favored in most use cases over for (i = 0, i < n; i++) { a[i] } - they're simpler to reason about because they restrict the conceptual operational space.
- formerly_proven 6y agoThe "delegate" statement encapsulates which exceptions are handled and how in the supplied callable expression. This is functionally different from repeating "except (FooExc, BarExc, BazExc) as exc: handle(exc)". It would also save two to three lines on average.