Generator.prototype.throw()
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2016.
제너레이터의 throw()
메서드는 현재 중단 된 위치에서 제너레이터에 throw
문이 삽입되는 것처럼 작동하여 제너레이터의 오류 조건을 알려주고 오류를 처리하거나 정리 작업을 수행하며 제너레이터를 종료할 수 있도록 합니다.
구문
generatorObject.throw(exception);
매개변수
반환 값
예외가 try...catch
에서 발생하고 제너레이터가 재개하여 더 많은 값을 yield하면 다음 두 가지 속성을 가진 객체를 반환합니다.
예외
예외가 try...catch
에서 발생하지 않으면 throw()
로 전달 된 exception
은 제너레이터에서 취급하지 않습니다.
설명
throw()
메소드는 호출 될 때, 이는 현재 중단 된 위치의 제너레이터에 삽입된 throw exception;
문 처럼 보일 수 있습니다. exception
은 throw()
메서드에 전달 된 예외입니다. 따라서 일반적인 흐름에서 throw(exception)
을 호출하면 제너레이터가 throw됩니다. 그러나 yield 식이 try...catch
블록으로 감싸졌 다면, 오류를 포착할 수 있으며 제어 흐름은 오류 처리 후 재개하거나 정상적으로 종료 하도록 진행됩니다.
예제
throw() 사용하기
다음 예제에서는 간단한 제너레이터와 throw
메서드를 사용하여 오류를 발생시키는 것을 보여 줍니다. 오류는 보통 try...catch
블록으로 처리합니다.
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 }
명세서
Specification |
---|
ECMAScript Language Specification # sec-generator.prototype.throw |
브라우저 호환성
BCD tables only load in the browser