Module Base.ErrorSource
A lazy string, implemented with Info, but intended specifically for error messages.
Serialization and comparison force the lazy message.
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.
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.
val create :
?here:Stdlib.Lexing.position ->
?strict:unit ->
string ->
'a ->
('a -> Base.Sexp.t) ->
Base.Error.tFor 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.
Constructs a t containing only a string from a format. This eagerly constructs the string.
Adds a string to the front.
Adds a sexp to the front.
Adds a lazy sexp to the front.
Adds a string and some other data in the form of an s-expression at the front.
Combines multiple infos into one.
of_exn and to_exn are primarily used with Error, but their definitions have to be here because they refer to the underlying representation.
~backtrace:`Get attaches the backtrace for the most recent exception. The same caveats as for Printexc.print_backtrace apply. ~backtrace:(`This s) attaches the backtrace s. The default is no backtrace.
Note that the exception raised by this function maintains a reference to the t passed in.