> For the complete documentation index, see [llms.txt](https://strctr.gitbook.io/programming/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://strctr.gitbook.io/programming/01-languages/javascript/01-language/e-controls/e3-generators/06-generator-throw.md).

# 06. Generator .throw()

Вызов `generator.throw(x)` выполняет `throw x` на месте текущего приостановленного `yield`. На строке с `yield` возникает исключение, которое может быть перехвачено. Если ошибку не перехватить, то она «выпадет» из генератора.

```javascript
function* gen() {
  // В этой строке возникнет ошибка
  let result = yield "Сколько будет 2 + 2?";
}

let generator = gen();
let question = generator.next().value;

try {
  generator.throw(new Error("ответ не найден в моей базе данных"));
} catch (e) {
  alert(e); // выведет ошибку
}
```

Throwing an exception in a newborn generator (that hasn’t started yet) is allowed:

```javascript
function* genFunc() {}
genFunc().throw(new Error("Problem!"));
// Error: Problem!
```
