处理引用项目中代码的异常

本文关键字:异常 代码 引用 项目 处理 | 更新日期: 2023-09-27 18:34:26

我有一个 C# 控制台项目,其中我将业务逻辑与 UI 分离出来。业务逻辑调用 API,检索 JSON 数据,然后使用数据更新数据库。UI 处理结果的显示,并循环遍历队列以使用业务逻辑处理记录。

我的问题是如何正确处理业务逻辑引发的异常。UI 项目当前处理冒泡的异常,但我想提供尽可能详细的错误消息。例如,有时 API 无法授权或可能已关闭,我想记录该特定异常。问题是 UI 项目对HttpRequestException一无所知,而无需我添加对System.Net.Http库的引用,这会产生我不想要的依赖项。

项目中处理异常的"最佳实践"是什么,而不是在生成异常的位置?

处理引用项目中代码的异常

如果要在不显式引用System.Net.Http的情况下将详细消息传递给 UI 项目,请考虑在业务逻辑中捕获这些 HTTP 异常,将它们包装在库中定义的异常类型中,然后重新引发新异常。 然后,您的 UI 库只需要了解它已引用的业务逻辑库,并且业务逻辑可以为无法正确恢复的内容提供最丰富的消息。

我想说最好的做法是不处理它们。您不知道这些异常是什么,那么如何"处理"它们呢?

要么信任这些异常的 Message 属性并将它们显示给用户,要么只是告诉用户"对不起,发生了不好的事情"。

请记住,您的用户需要阅读详细的消息并决定如何处理它们。他们很可能会忽略这些消息,或者打电话给某人询问如何处理它们。确保记录足够的信息来应答呼叫。有时,您最好显示一条消息,上面写着"请打电话给可以找出问题所在的人"。