NAME
Wasm::Trap - Wasm trap class
VERSION
version 0.23
SYNOPSIS
use Wasm::Trap;
my $trap = Wasm::Trap->new(
"something went bump in the night\0",
);
DESCRIPTION
WARNING: WebAssembly and Wasmtime are a moving target and the interface for these modules is under active development. Use with caution.
This class represents a trap thrown into or out of WebAssembly. It can be thrown back to WebAssembly via die in a Perl function called from WebAssembly. It can be caught in Perl via eval around WebAssembly.
The actual implementation may be a super or subclass. As of this writing it is a simple wrapper around Wasm::Wasmtime::Trap, but relying on that is undefined behavior. In order to catch a trap from WebAssembly, use this class name like so:
use Ref::Util qw( is_blessed_ref );
local $@ = '';
eval {
web_assembly_func();
};
if(my $error = $@)
{
if(is_blessed_ref $error && $error->isa('Wasm::Trap'))
{
my $message = $error->message;
my $exit_value = $error->exit_value;
print "message = $message\n";
print "exit_value = $exit_value\n";
}
}
To throw from Perl:
use Wasm::Trap;
sub perl_from_wasm
{
die Wasm::Trap->new("diagnostic\0");
}
CONSTRUCTORS
new
my $trap = Wasm::Trap->new($message);
This creates a new trap object.
METHODS
message
my $message = $trap->message;
Returns the trap message as a string.
exit_status
my $status = $trap->exit_status;
If the trap was triggered by an exit
call, this will return the exist status code. If it wasn't triggered by an exit
call it will return undef
.
SEE ALSO
AUTHOR
Graham Ollis <plicease@cpan.org>
COPYRIGHT AND LICENSE
This software is copyright (c) 2020-2022 by Graham Ollis.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.