WebAssembly.Exception-Konstruktor
Baseline
Weitgehend verfügbar
Diese Funktion ist gut etabliert und funktioniert auf vielen Geräten und in vielen Browserversionen. Sie ist seit Mai 2022 browserübergreifend verfügbar.
Der WebAssembly.Exception()-Konstruktor wird verwendet, um eine neue WebAssembly.Exception-Objektinstanz zu erstellen.
Syntax
new Exception(tag, payload)
new Exception(tag, payload, options)
Parameter
tag-
Eine Instanz von
WebAssembly.Tag, die die erwarteten Datentypen für jeden der Werte impayloaddefiniert. payload-
Ein Array von einem oder mehreren Datenfeldern, die die Nutzdaten der Ausnahme bilden. Die Elemente müssen den Datentypen der entsprechenden Elemente im
tagentsprechen. Wenn die Anzahl der Datenfelder in den Nutzdaten und deren Typen nicht übereinstimmen, wird eineTypeError-Ausnahme ausgelöst. optionsOptional-
Ein Objekt mit den folgenden optionalen Feldern:
traceStackOptional-
true, wenn dieExceptionmöglicherweise einen Stack-Trace an ihrerstack-Eigenschaft angehängt haben kann, andernfallsfalse. Standardmäßigfalse.
Ausnahmen
TypeError-
Die
payload- undtag-Sequenzen haben nicht die gleiche Anzahl von Elementen und/oder die Elemente sind nicht von übereinstimmenden Typen.
Beschreibung
Der Exception()-Konstruktor akzeptiert ein WebAssembly.Tag, ein Array von Werten und ein options-Objekt als Argumente.
Der Tag definiert eindeutig den Typ einer Ausnahme, einschließlich der Reihenfolge ihrer Argumente und deren Datentypen.
Der gleiche Tag, der zum Erstellen der Exception verwendet wurde, ist erforderlich, um auf die Argumente einer ausgelösten Ausnahme zuzugreifen (mithilfe von Exception.prototype.getArg()).
Beispiele
>Grundlegende Verwendung
Normalerweise würde dieser Konstruktor nicht manuell verwendet werden, um eine Wasm-Ausnahme zu erstellen. Stattdessen wird ein WebAssembly.Exception-Objekt normalerweise beim Umgang mit Wasm-Ausnahmen erstellt, zum Beispiel:
WebAssembly.instantiateStreaming(fetch("module.wasm"), { env }).then(
(result) => {
try {
// Cause function to throw
result.instance.exports.throw(-1);
} catch (e) {
if (e instanceof WebAssembly.Exception && e.is(myErrorTag)) {
const errorCode = e.getArg(myErrorTag, 0); // 0 = first payload value
console.log("Error code:", errorCode); // 42
} else {
throw e; // throw other errors
}
}
},
);
Ein funktionierendes Beispiel finden Sie auf der Referenzseite für die throw-Anweisung.
Manuelle Nutzung
Dieses Beispiel zeigt die manuelle Erstellung einer WebAssembly.Exception-Instanz.
// Create tag and use it to create an exception
const tag = new WebAssembly.Tag({ parameters: ["i32", "f32"] });
const exception = new WebAssembly.Exception(tag, [42, 42.3]);
Hinweis:
Das stack-Beispiel zeigt die Erstellung einer Ausnahme, die den options-Parameter verwendet.
Spezifikationen
| Spezifikation |
|---|
| WebAssembly JavaScript Interface: Exception Handling> # dom-exception-exception> |