webassembly/proxy_c: Ensure objs thrown into generators are exceptions.
This commit defines a new `JsException` exception type which is used on the Python side to wrap JavaScript errors. That's then used when a JavaScript Promise is rejected, and the reason is then converted to a `JsException` for the Python side to handle. This new exception is exposed as `jsffi.JsException`. Signed-off-by: Damien George <damien@micropython.org>
This commit is contained in:
22
tests/ports/webassembly/await_error_handling.mjs
Normal file
22
tests/ports/webassembly/await_error_handling.mjs
Normal file
@@ -0,0 +1,22 @@
|
||||
// Test await'ing on a JavaScript async function that throws a JavaScript Error.
|
||||
|
||||
const mp = await (await import(process.argv[2])).loadMicroPython();
|
||||
|
||||
globalThis.foo = async () => {
|
||||
console.log(2);
|
||||
throw Error("test");
|
||||
};
|
||||
|
||||
await mp.runPythonAsync(`
|
||||
import js, jsffi
|
||||
print(1)
|
||||
try:
|
||||
await js.foo()
|
||||
except jsffi.JsException as er:
|
||||
error = er
|
||||
print(error)
|
||||
print(3)
|
||||
`);
|
||||
|
||||
const error = mp.globals.get("error");
|
||||
console.log(error instanceof Error, error.name, error.message);
|
||||
5
tests/ports/webassembly/await_error_handling.mjs.exp
Normal file
5
tests/ports/webassembly/await_error_handling.mjs.exp
Normal file
@@ -0,0 +1,5 @@
|
||||
1
|
||||
2
|
||||
(<JsProxy 6>, 'Error', 'test')
|
||||
3
|
||||
true Error test
|
||||
Reference in New Issue
Block a user