sig
  type t = java'lang'Exception java_instance
  val make :
    ?cause:JavaException.t ->
    ?message:JavaString.t -> unit -> JavaException.t
  external throw : JavaException.t -> 'a = "java throw"
  val get_cause : JavaException.t -> java'lang'Throwable java_instance
  val get_message : JavaException.t -> JavaString.t
  val get_stack_trace :
    JavaException.t ->
    java'lang'StackTraceElement java_instance java_reference_array
  val print_stack_trace : JavaException.t -> unit
  val null : JavaException.t
  external is_null : JavaException.t -> bool = "java is_null"
  external is_not_null : JavaException.t -> bool = "java is_not_null"
  val wrap : JavaException.t -> JavaException.t option
  val unwrap : JavaException.t option -> JavaException.t
end