`Exn s raises an exception for each failure branch, and this
exception is caught in one place, avoiding duplication of the
`Expr uses the
error_expr in each failure branch,
resulting in code duplication but avoiding raising and
catching an exception. Suitable for fixed-length values
for which code duplication is tolerable.