服务调用期间的异常处理与翻译支持
服务调用期间的异常处理
迄今为止,抛出异常的 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 缓存中的英文错误消息也将用于在控制台记录消息。
背景
- 背景讨论。
- 实现 Core PR #102592。

