Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

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 Instanz eines WebAssembly.Exception-Objekts zu erstellen.

Syntax

js
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 im payload definiert.

payload

Ein Array von einem oder mehreren Datenfeldern, die die Nutzlast der Ausnahme bilden. Die Elemente müssen mit den Datentypen der entsprechenden Elemente im tag übereinstimmen. Wenn die Anzahl der Datenfelder in der Nutzlast und deren Typen nicht übereinstimmen, wird eine TypeError-Ausnahme ausgelöst.

options Optional

Ein Objekt mit den folgenden optionalen Feldern:

traceStack Optional

true, wenn die Exception möglicherweise einen Stack-Trace an deren stack-Eigenschaft angehängt hat, ansonsten false. Standardmäßig false.

Ausnahmen

TypeError

Die payload- und tag-Sequenzen haben nicht die gleiche Anzahl an 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 zur Erstellung der Exception verwendet wurde, ist erforderlich, um die Argumente einer ausgelösten Ausnahme zuzugreifen (mithilfe von Exception.prototype.getArg()).

Beispiele

Grundlegende Verwendung

Normalerweise würde man diesen Konstruktor nicht verwenden, um manuell eine Wasm-Ausnahme zu erstellen. Stattdessen wird ein WebAssembly.Exception-Objekt normalerweise beim Umgang mit Wasm-Ausnahmen erstellt, zum Beispiel:

js
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
      }
    }
  },
);

Für ein funktionierendes Beispiel siehe die throw-Instruktionsreferenzseite.

Manuelle Verwendung

Dieses Beispiel zeigt die manuelle Erstellung einer WebAssembly.Exception-Instanz.

js
// 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

Browser-Kompatibilität

Siehe auch