В целом это может быть не очень хорошей практикой, так как это действительно снижает читабельность вашего кода, но вы можете создать exception_wrapper
декоратор, например так:
def exception_wrapper(func):
def run(exception, on_exception, *args, **kwargs):
try:
return func(*args, **kwargs)
except exception:
on_exception()
return run
def on_exception():
pass
@exception_wrapper
def f(a, b):
if a < b:
raise NotImplementedError
return a + b
print(f(NotImplementedError, on_exception, 10, 2))
Опять же, я против использования такого рода обёрток для исключений, так как они сделают вашу жизнь труднее в долгосрочной перспективе, но это ваше дело!