跳至主要内容

错误处理

本指南说明了如何在面板插件中处理错误,并针对常见场景提供了一些建议。

提供可用的默认值

允许用户逐步学习您的面板插件。提供有用的默认配置,以便

  • 用户可以立即开始使用。
  • 您可以避免不必要的错误消息。

例如,通过选择第一个预期类型的字段,面板可以显示可视化效果而无需任何用户配置。如果用户明确地选择了某个字段,那么就使用那个字段。否则,默认使用第一个类型为 `string` 的字段。

const numberField = frame.fields.find((field) =>
options.numberFieldName ? field.name === options.numberFieldName : field.type === FieldType.number
);

显示错误消息

要向用户显示错误消息,请使用要显示的消息 `throw` 一个 `Error`

throw new Error('An error occurred');

Grafana 会在面板的左上角显示错误消息。

Panel error.
面板错误。

我们建议您避免向用户显示过于技术性的错误消息。如果您想让技术用户报告错误,请考虑将其记录到控制台。

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

Grafana 会按原样在 UI 中显示异常消息,因此请使用语法正确的句子。有关更多信息,请参阅 文档风格指南

常见的错误场景

以下是一些可能需要向用户显示错误的情况示例。

无效的查询响应

用户在为面板创建数据源查询时拥有完全的自由。如果您的面板插件需要查询响应的特定格式,那么请使用面板画布来指导用户。

if (!numberField) {
throw new Error('Query result is missing a number field');
}

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