一些帖子涵盖了基于捕获的异常提供用户友好消息的问题,例如报告异常消息
我也认为将较低层的异常包装到当前层的已定义异常以确保封装。例如,服务或域层不应暴露数据访问层的异常。
在我的 UI 层中,我捕获了在服务层或域层中定义的异常,并将它们转换为对话框中有意义的用户消息。我不使用异常消息,因为它可能 1)不是用户友好的,2)不是国际化的。
现在我第一次开发移动应用程序。如果由于连接或网络问题(可能是坏的或没有服务或处于飞行模式等)而无法执行某项操作,我发现它对用户很有用且 Importamt 向他们显示适当的消息
为了显示这种消息,我必须从服务/域层捕获它以转换为用户友好的消息并进行国际化等。但这对我来说是违反直觉的,在这一层中暴露这些异常。
那么在移动应用程序的域层中暴露 NetworkException 可以吗?或者是否有任何其他技术来处理这种情况?我对此感到有点不好,因为它引入了泄漏的抽象,但我不知道如何获取有关这些对用户很重要的低级异常的信息。
还是我走错了路,可以告诉用户“无法执行操作 x”,而不给出任何理由?
更新:
Eric Evans 在他的 DDD 书中展示了这个图表:
从 UI 层到基础设施层之间存在连接。这可以解释为 UI 可能直接知道基础设施异常吗?