pub enum Trap {
User(Box<dyn Error + Send + Sync>),
Wasm {
pc: usize,
backtrace: Backtrace,
signal_trap: Option<TrapCode>,
},
Lib {
trap_code: TrapCode,
backtrace: Backtrace,
},
OOM {
backtrace: Backtrace,
},
UncaughtException {
exnref: VMExceptionRef,
backtrace: Backtrace,
},
}Expand description
Stores trace message with backtrace.
Variants§
User(Box<dyn Error + Send + Sync>)
A user-raised trap through raise_user_trap.
Wasm
A trap raised from the Wasm generated code
Note: this trap is deterministic (assuming a deterministic host implementation)
Fields
backtrace: BacktraceNative stack backtrace at the time the trap occurred
Lib
A trap raised from a wasm libcall
Note: this trap is deterministic (assuming a deterministic host implementation)
Fields
backtrace: BacktraceNative stack backtrace at the time the trap occurred
OOM
A trap indicating that the runtime was unable to allocate sufficient memory.
Note: this trap is nondeterministic, since it depends on the host system.
Fields
backtrace: BacktraceNative stack backtrace at the time the OOM occurred
UncaughtException
A WASM exception was thrown but not caught.
Fields
exnref: VMExceptionRefThe exception reference of the uncaught exception.
backtrace: BacktraceNative stack backtrace at the time the exception was thrown. This is a clone of the backtrace stored in the exception itself.
Implementations§
Source§impl Trap
impl Trap
Sourcepub fn user(err: Box<dyn Error + Send + Sync>) -> Self
pub fn user(err: Box<dyn Error + Send + Sync>) -> Self
Construct a new Error with the given a user error.
Internally saves a backtrace when constructed.
Sourcepub fn wasm(
pc: usize,
backtrace: Backtrace,
signal_trap: Option<TrapCode>,
) -> Self
pub fn wasm( pc: usize, backtrace: Backtrace, signal_trap: Option<TrapCode>, ) -> Self
Construct a new Wasm trap with the given source location and backtrace.
Internally saves a backtrace when constructed.
Sourcepub fn lib(trap_code: TrapCode) -> Self
pub fn lib(trap_code: TrapCode) -> Self
Construct a new Wasm trap with the given trap code.
Internally saves a backtrace when constructed.
Sourcepub fn oom() -> Self
pub fn oom() -> Self
Construct a new OOM trap with the given source location and trap code.
Internally saves a backtrace when constructed.
Sourcepub fn uncaught_exception(exnref: VMExceptionRef, ctx: &StoreObjects) -> Self
pub fn uncaught_exception(exnref: VMExceptionRef, ctx: &StoreObjects) -> Self
Construct a new UncaughtException trap with the given exception reference.
Sourcepub fn downcast<T: Error + 'static>(self) -> Result<T, Self>
pub fn downcast<T: Error + 'static>(self) -> Result<T, Self>
Attempts to downcast the Trap to a concrete type.
Sourcepub fn downcast_ref<T: Error + 'static>(&self) -> Option<&T>
pub fn downcast_ref<T: Error + 'static>(&self) -> Option<&T>
Attempts to downcast the Trap to a concrete type.
Sourcepub fn is_exception(&self) -> bool
pub fn is_exception(&self) -> bool
Returns true if the trap is an exception
Sourcepub fn to_exception_ref(&self) -> Option<VMExceptionRef>
pub fn to_exception_ref(&self) -> Option<VMExceptionRef>
If the Trap is an uncaught exception, returns it.