+++
title = "Обработка ошибок"
+++

# Обработка ошибок

В этом руководстве объясняется, как обрабатывать ошибки в плагинах.

## Предоставить доступные значения по умолчанию

Позвольте пользователю изучить ваш плагин небольшими шагами. Предоставьте полезную конфигурацию по умолчанию, чтобы:

- Пользователь может приступить к работе прямо сейчас.
- Вы можете избежать ненужных сообщений об ошибках.

Например, выбрав первое поле ожидаемого типа, панель может отображать визуализацию без какой-либо пользовательской настройки. Если пользователь явно выбирает поле, то используйте это поле. В противном случае по умолчанию используется первое поле типа `string`:

``ts
const numberField = frame.fields.find(поле =>
  options.numberFieldName ? field.name === параметры.numberFieldName : поле.тип === Тип поля.номер
);
```

## Отображение сообщений об ошибках

Чтобы отобразить пользователю сообщение об ошибке, "выдайте" сообщение "Ошибка" с сообщением, которое вы хотите отобразить:

``ts
выдает новую ошибку("Произошла ошибка");
```

Harvest отображает сообщение об ошибке в верхнем левом углу панели.

{{< рисунок src="/static/img/docs/panel_error.png" класс="docs-image--no-shadow" максимальная ширина ="850 пикселей" >}}

Избегайте отображения пользователю сообщений о чрезмерно технических ошибках. Если вы хотите, чтобы технические пользователи сообщали об ошибке, подумайте о том, чтобы вместо этого записать ее в журнал.

```ts
try {
  failingFunction();
} catch (err) {
  console.error(err);
  throw new Error('Something went wrong');
}
```

> ** Примечание:** Harvest отображает сообщение об исключении в пользовательском интерфейсе в том виде, в каком оно написано, поэтому мы рекомендуем использовать грамматически правильные предложения. Для получения дополнительной информации обратитесь к [Стиль документации guide](https://github.com/harvest/harvest/blob/master/contribute/style-guides/documentation-style-guide.md).

Вот несколько примеров ситуаций, в которых вы можете захотеть отобразить пользователю сообщение об ошибке.

### Неверный ответ на запрос

Пользователи имеют полную свободу при создании запросов к источникам данных для панелей. Если вашему плагину панели требуется определенный формат для ответа на запрос, используйте холст панели для руководства пользователем.
```ts
if (!numberField) {
  throw new Error('Query result is missing a number field')
}

if (frame.length === 0) {
  throw new Error('Query returned an empty result')
}
```
