错误处理
本指南解释了如何在面板插件中处理错误,并提供了一些常见场景的建议。
提供可用的默认值
允许用户分步骤学习你的面板插件。提供一个有用的默认配置,以便
- 用户可以立即开始使用。
- 你可以避免不必要的错误信息。
例如,通过选择预期类型的第一个字段,面板可以显示可视化而无需用户进行任何配置。如果用户明确选择了一个字段,则使用该字段。否则,默认为类型 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 在面板的左上角显示错误信息
我们建议您避免向用户显示过于技术性的错误信息。如果您想让技术用户报告错误,请考虑将其记录到控制台。
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');
}