Movatterモバイル変換


[0]ホーム

URL:


  1. 개발자를 위한 웹 기술
  2. JavaScript
  3. JavaScript 참고서
  4. 표준 내장 객체
  5. Generator
  6. Generator.prototype.throw()

This page was translated from English by the community.Learn more and join the MDN Web Docs community.

View in EnglishAlways switch to English

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 ⁨2016년 9월⁩.

제너레이터의throw() 메서드는 현재 중단 된 위치에서 제너레이터에throw 문이 삽입되는 것처럼 작동하여 제너레이터의 오류 조건을 알려주고 오류를 처리하거나 정리 작업을 수행하며 제너레이터를 종료할 수 있도록 합니다.

구문

js
generatorObject.throw(exception);

매개변수

exception

발생시킬 예외입니다. 디버깅을 위해Error 인스턴스(instanceofError)로 만드는 것이 유용합니다.

반환 값

예외가try...catch에서 발생하고 제너레이터가 재개하여 더 많은 값을 yield하면 다음 두 가지 속성을 가진 객체를 반환합니다.

done

불리언 값입니다.

  • 제너레이터가 제어 흐름의 끝에 도달한 경우true입니다.
  • 제너레이터가 더 많은 값을 생성 할 수 있다면false입니다.
value

다음 yield 식에서 산출된 값입니다.

예외

예외가try...catch에서 발생하지 않으면throw()로 전달 된exception은 제너레이터에서 취급하지 않습니다.

설명

throw() 메소드는 호출 될 때, 이는 현재 중단 된 위치의 제너레이터에 삽입된throw exception; 문 처럼 보일 수 있습니다.exceptionthrow() 메서드에 전달 된 예외입니다. 따라서 일반적인 흐름에서throw(exception)을 호출하면 제너레이터가 throw됩니다. 그러나 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 }

명세서

Specification
ECMAScript® 2026 Language Specification
# sec-generator.prototype.throw

브라우저 호환성

같이 보기

Help improve MDN

Learn how to contribute

This page was last modified on byMDN contributors.


[8]ページ先頭

©2009-2025 Movatter.jp