Functions for logging and printing exceptions

`type visibility````=`

`|` `Exn_user` | (** always add to error log *)
`|` `Exn_developer` | (** only add to error log in developer mode *)
`|` `Exn_system` | (** never add to error log *)

``

visibility of the exception

`include sig ... end`
`val compare_visibility : visibility ‑> visibility ‑> int`
`val equal_visibility : visibility ‑> visibility ‑> bool`
`val string_of_visibility : visibility ‑> string`
`type severity````=`

`|` `High` | (** high severity bug *)
`|` `Medium` | (** medium severity bug *)
`|` `Low` | (** low severity bug *)

``

severity of bugs

`type err_kind````=`

`|` `Kwarning`
`|` `Kerror`
`|` `Kinfo`
`|` `Kadvice`
`|` `Klike`

``

kind of error/warning

`include sig ... end`
`val compare_err_kind : err_kind ‑> err_kind ‑> int`
`val equal_err_kind : err_kind ‑> err_kind ‑> bool`
`type err_class````=`

`|` `Checker`
`|` `Prover`
`|` `Nocat`
`|` `Linters`

``

class of error

`val equal_err_class : err_class ‑> err_class ‑> bool`
`exception` `Abduction_case_not_implemented of InferBase.Logging.ocaml_pos`
`exception` `Analysis_stops of InferIR.Localise.error_desc * InferBase.Logging.ocaml_pos option`
`exception` `Array_of_pointsto of InferBase.Logging.ocaml_pos`
`exception` `Array_out_of_bounds_l1 of InferIR.Localise.error_desc * InferBase.Logging.ocaml_pos`
`exception` `Array_out_of_bounds_l2 of InferIR.Localise.error_desc * InferBase.Logging.ocaml_pos`
`exception` `Array_out_of_bounds_l3 of InferIR.Localise.error_desc * InferBase.Logging.ocaml_pos`
`exception` `Bad_footprint of InferBase.Logging.ocaml_pos`
`exception` `Cannot_star of InferBase.Logging.ocaml_pos`
`exception` `Class_cast_exception of InferIR.Localise.error_desc * InferBase.Logging.ocaml_pos`
`exception` `Codequery of InferIR.Localise.error_desc`
`exception` `Comparing_floats_for_equality of InferIR.Localise.error_desc * InferBase.Logging.ocaml_pos`
`exception` `Condition_always_true_false of InferIR.Localise.error_desc * bool * InferBase.Logging.ocaml_pos`
`exception` `Custom_error of string * InferIR.Localise.error_desc`
`exception` `Dummy_exception of InferIR.Localise.error_desc`
`exception` `Dangling_pointer_dereference of InferIR.PredSymb.dangling_kind option * InferIR.Localise.error_desc * InferBase.Logging.ocaml_pos`
`exception` `Deallocate_stack_variable of InferIR.Localise.error_desc`
`exception` `Deallocate_static_memory of InferIR.Localise.error_desc`
`exception` `Deallocation_mismatch of InferIR.Localise.error_desc * InferBase.Logging.ocaml_pos`
`exception` `Double_lock of InferIR.Localise.error_desc * InferBase.Logging.ocaml_pos`
`exception` `Divide_by_zero of InferIR.Localise.error_desc * InferBase.Logging.ocaml_pos`
`exception` `Field_not_null_checked of InferIR.Localise.error_desc * InferBase.Logging.ocaml_pos`
`exception` `Empty_vector_access of InferIR.Localise.error_desc * InferBase.Logging.ocaml_pos`
`exception` `Eradicate of InferBase.IssueType.t * InferIR.Localise.error_desc`
`exception` `Checkers of InferBase.IssueType.t * InferIR.Localise.error_desc`
`exception` `Frontend_warning of string * string option * InferIR.Localise.error_desc * InferBase.Logging.ocaml_pos`
`exception` `Inherently_dangerous_function of InferIR.Localise.error_desc`
`exception` `Internal_error of InferIR.Localise.error_desc`
`exception` `Java_runtime_exception of InferIR.Typ.Name.t * string * InferIR.Localise.error_desc`
`exception` `Leak of bool * InferIR.Sil.hpred * visibility * InferIR.Localise.error_desc * bool * InferIR.PredSymb.resource * InferBase.Logging.ocaml_pos`
`exception` `Missing_fld of InferIR.Typ.Fieldname.t * InferBase.Logging.ocaml_pos`
`exception` `Premature_nil_termination of InferIR.Localise.error_desc * InferBase.Logging.ocaml_pos`
`exception` `Null_dereference of InferIR.Localise.error_desc * InferBase.Logging.ocaml_pos`
`exception` `Null_test_after_dereference of InferIR.Localise.error_desc * InferBase.Logging.ocaml_pos`
`exception` `Parameter_not_null_checked of InferIR.Localise.error_desc * InferBase.Logging.ocaml_pos`
`exception` `Pointer_size_mismatch of InferIR.Localise.error_desc * InferBase.Logging.ocaml_pos`
`exception` `Precondition_not_found of InferIR.Localise.error_desc * InferBase.Logging.ocaml_pos`
`exception` `Precondition_not_met of InferIR.Localise.error_desc * InferBase.Logging.ocaml_pos`
`exception` `Retain_cycle of InferIR.Localise.error_desc * InferBase.Logging.ocaml_pos`
`exception` `Registered_observer_being_deallocated of InferIR.Localise.error_desc * InferBase.Logging.ocaml_pos`
`exception` `Return_expression_required of InferIR.Localise.error_desc * InferBase.Logging.ocaml_pos`
`exception` `Return_statement_missing of InferIR.Localise.error_desc * InferBase.Logging.ocaml_pos`
`exception` `Return_value_ignored of InferIR.Localise.error_desc * InferBase.Logging.ocaml_pos`
`exception` `Skip_function of InferIR.Localise.error_desc`
`exception` `Skip_pointer_dereference of InferIR.Localise.error_desc * InferBase.Logging.ocaml_pos`
`exception` `Stack_variable_address_escape of InferIR.Localise.error_desc * InferBase.Logging.ocaml_pos`
`exception` `Symexec_memory_error of InferBase.Logging.ocaml_pos`
`exception` `Unary_minus_applied_to_unsigned_expression of InferIR.Localise.error_desc * InferBase.Logging.ocaml_pos`
`exception` `Unknown_proc`
`exception` `Unreachable_code_after of InferIR.Localise.error_desc * InferBase.Logging.ocaml_pos`
`exception` `Unsafe_guarded_by_access of InferIR.Localise.error_desc * InferBase.Logging.ocaml_pos`
`exception` `Use_after_free of InferIR.Localise.error_desc * InferBase.Logging.ocaml_pos`
`exception` `Wrong_argument_number of InferBase.Logging.ocaml_pos`
`val err_class_string : err_class ‑> string`

string describing an error class

`val err_kind_string : err_kind ‑> string`

string describing an error kind

`val handle_exception : exn ‑> bool`

Return true if the exception is not serious and should be handled in timeout mode

`val print_exception_html : string ‑> exn ‑> unit`

print a description of the exception to the html output

`val pp_err : node_key:InferStdlib.IStd.Caml.Digest.t ‑> InferBase.Location.t ‑> err_kind ‑> InferBase.IssueType.t ‑> InferIR.Localise.error_desc ‑> InferBase.Logging.ocaml_pos option ‑> Format.formatter ‑> unit ‑> unit`

pretty print an error

`type t````=` `{`

`name : InferBase.IssueType.t;`
`description : InferIR.Localise.error_desc;`
`ocaml_pos : InferBase.Logging.ocaml_pos option;` | (** location in the infer source code *)
`visibility : visibility;`
`severity : severity;`
`kind : err_kind option;`
`category : err_class;`

`}```
`val recognize_exception : exn ‑> t`