to_string_hum
forces the lazy message, which might be an expensive operation.
to_string_hum
usually produces a sexp; however, it is guaranteed that to_string_hum
(of_string s) = s
.
If this string is going to go into a log file, you may find it useful to ensure that
the string is only one line long. To do this, use to_string_mach t
.
to_string_mach t
outputs t
as a sexp on a single-line.
old version (pre 109.61) of to_string_hum
that some applications rely on.
Calls should be replaced with to_string_mach t
, which outputs more parenthesis and
backslashes.
Be careful that the body of the lazy or thunk does not access mutable data, since it will only be called at an undetermined later point.
For create message a sexp_of_a
, sexp_of_a a
is lazily computed, when the info is
converted to a sexp. So, if a
is mutated in the time between the call to create
and the sexp conversion, those mutations will be reflected in the sexp. Use
~strict:()
to force sexp_of_a a
to be computed immediately.
Construct a t
containing only a string from a format. This eagerly constructs
the string.
of_exn
and to_exn
are primarily used with Error
, but their definitions have to
be here because they refer to the underlying representation.
Note that the exception raised by this function maintains a reference to the t
passed in.
failwiths ?strict ?here message a sexp_of_a
= Error.raise (Error.create ?strict ?here s a sexp_of_a)
As with Error.create
, sexp_of_a a
is lazily computed, when the error is converted
to a sexp. So, if a
is mutated in the time between the call to failwiths
and the
sexp conversion, those mutations will be reflected in the error message. Use
~strict:()
to force sexp_of_a a
to be computed immediately.
The pa_fail
preprocessor replaces failwiths
with failwiths ?here:[%here]
so that
one does not need to (and cannot) supply [%here]
. pa_fail
does not add
?here:[%here]
to Error.failwiths
.
In this signature we write ?here:Lexing.position
rather than
?here:Source_code_position.t
to avoid a circular dependency.
failwithp here
is like failwiths ~here
, except that you can provide a source
position yourself (which is only interesting if you don't provide [%here]
).
Error.t
is NOT wire-compatible with Error.Stable.V1.t
. See info.mli for
details.