Exceptions have the added benefit of stack traces. Optionals or error tuples present the issue but conceal the cause. Languages that offer monadic error handling like to hide the origin of the failure. Sometimes this is done also because such a stack trace is difficult to reconstruct in a lazy setting and the traces need unwound to memory alongside thunks.
Hegel said somewhere that all important personalities and historical events repeat twice. He forgot to add: once as a tragedy and the other time as a farce.
