For AI agents: the complete documentation index is available at /llms.txt, the full documentation bundle is available at /llms-full.txt, and this page is available as Markdown at /developers/blog/2023-11-30-service-exceptions-and-translations.md.

服务调用期间的异常处理与翻译支持

服务调用期间的异常处理

迄今为止,抛出异常的 service 调用会记录 stack trace。由于错误用法(例如无效输入)导致失败的 service 调用不需要 stack trace,如果能向用户提供其本语言的有帮助的错误消息会更好。

为了在这些情况下抑制 stack trace,引入了派生自 HomeAssistantError 的新异常类型 ServiceValidationError。当 service 因被错误使用而失败时,现在应抛出 ServiceValidationError 而不是 ValueError

如果 service 被正确使用但仍然失败,仍然应抛出 HomeAssistantError,或者是除 ServiceValidationError 之外的 HomeAssistantError 子类。

当 service 抛出 ServiceValidationError 时,错误消息将显示在 UI 和日志中,但 stack trace 将以 debug 级别记录。对于从 service 调用抛出的其他异常(包括 HomeAssistantError),一切不变,仍然以异常严重级别打印完整的 stack trace。

集成应进行更新:当 service 因错误用法而失败时,抛出 ServiceValidationError 而不是 ValueError;当它因其他预期错误(例如网络错误)而失败时,抛出 HomeAssistantError了解更多

异常的翻译支持

HomeAssistantError 异常及其子类(包括 ServiceValidationError)现在接受 translation key 以允许本地化。了解更多。当 frontend 收到关于异常的信息时,将使用 translation key。如果未作为参数将自定义错误消息传递给异常,translation 缓存中的英文错误消息也将用于在控制台记录消息。

背景