> The benefits over an exception is as the caller i can pattern match on the result of this. so i could have this is in a function in a case
Your example looks just like exceptions to me, just with different keywords
try:
return with_example(fname)
except RecoverableError:
recover(fname)
except Exception as e:
raise e