throw()
메소드는 Generator의 실행을 재개시키고 Generator 함수의 실행 문맥 속으로 error를 주입한다. done
과 value
프로퍼티를 가진 객체를 반환한다.
Syntax
gen.throw(exception)
매개 변수
exception
- Generator 함수의 실행 문맥 속으로 주입할 예외. 디버깅의 목적이라면
instanceof
Error
인 것이 유용하다.
반환 값
두 개의 프로퍼티를 가진 객체
done
(boolean)- Iterator(반복자)가 마지막 반복 작업을 마쳤을 경우
true
. 만약 iterator(반복자)에 return 값이 있다면value
의 값으로 지정된다. - Iterator(반복자)의 작업이 남아있을 경우
false
. Iterator(반복자)에done
프로퍼티 자체를 특정짓지 않은 것과 동일하다.
- Iterator(반복자)가 마지막 반복 작업을 마쳤을 경우
value
- Iterator(반복자)으로부터 반환되는 모든 자바스크립트 값이며done
이true
일 경우 생략될 수 있다.
예시
throw()
사용하기
다음의 예시는 간단한 Generator 함수와 throw 메소드를 통해서 주입된 에러를 보여준다. 에러는 try...catch
블록을 통해서 핸들링 할 수 있다.
function* gen() { while(true) { try { yield 42; } catch(e) { console.log("Error caught!"); } } } var g = gen(); g.next(); // { value: 42, done: false } g.throw(new Error("Something went wrong")); // "Error caught!" // { value: 42, done: false }
Specifications
Specification | Status | Comment |
---|---|---|
ECMAScript 2015 (6th Edition, ECMA-262) The definition of 'Generator.prototype.throw' in that specification. |
Standard | Initial definition. |
ECMAScript 2017 Draft (ECMA-262) The definition of 'Generator.prototype.throw' in that specification. |
Draft |
Browser compatibility
Feature | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
Basic support | ? | 26 (26) | ? | ? | ? |
Feature | Android | Chrome for Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
Basic support | ? | ? | 26.0 (26) | ? | ? | ? |