Generator.prototype.throw()
throw() 方法用於 例項,它會在生成器的當前暫停位置插入一個 Generatorthrow 語句,告知生成器發生錯誤,並允許其處理錯誤、執行清理或關閉自身。
語法
js
generatorInstance.throw(exception)
引數
返回值
如果丟擲的異常被 try...catch 捕獲,並且生成器恢復執行以產生更多值,它將返回一個具有兩個屬性的 Object。
異常
TypeError-
如果生成器已在執行,則丟擲錯誤。
如果 exception 未在生成器函式內的 try...catch 塊中捕獲,它也將被拋給 throw() 的呼叫者。
描述
呼叫 throw() 方法時,可以將其視為在生成器的當前暫停位置插入了一個 throw exception; 語句,其中 exception 是傳遞給 throw() 方法的異常。因此,在典型流程中,呼叫 throw(exception) 將導致生成器丟擲異常。但是,如果 yield 表示式被包含在 try...catch 塊中,則錯誤可能會被捕獲,並且控制流可以在錯誤處理後恢復,或者優雅地退出。
示例
使用 throw()
以下示例展示了一個生成器以及使用 throw 方法丟擲的錯誤。錯誤可以像往常一樣被 try...catch 塊捕獲。
js
function* gen() {
while (true) {
try {
yield 42;
} catch (e) {
console.log("Error caught!");
}
}
}
const g = gen();
g.next();
// { value: 42, done: false }
g.throw(new Error("Something went wrong"));
// "Error caught!"
// { value: 42, done: false }
規範
| 規範 |
|---|
| ECMAScript® 2026 語言規範 # sec-generator.prototype.throw |
瀏覽器相容性
載入中…