我有一个C#控制台项目,我从UI中分离出业务逻辑。业务逻辑调用API,检索JSON数据,然后使用数据更新数据库。 UI处理结果的显示,并循环遍历队列以处理具有业务逻辑的记录。
我的问题是如何正确处理业务逻辑抛出的异常。 UI项目当前处理冒泡的异常,但我想尽可能详细地给出错误消息。例如,有时API无法授权或可能已关闭,我想记录该特定异常。问题是如果没有我添加对HttpRequestException
库的引用,UI项目对System.Net.Http
一无所知,这会创建一个我不想要的依赖项。
处理项目中的例外情况的“最佳做法”是什么?
答案 0 :(得分:1)
如果要在不显式引用System.Net.Http
的情况下将详细消息传递给UI项目,请考虑在业务逻辑中捕获这些HTTP异常,将它们包装在您在该库中定义的异常类型中,然后重新抛出新的例外。然后,您的UI库只需要了解它已经引用的业务逻辑库,业务逻辑可以为无法正常恢复的内容提供最丰富的信息。
答案 1 :(得分:0)
我认为最佳做法是不处理它们。你不知道那些例外是什么,所以你怎么能“处理”它们呢?
要么信任这些异常的Message属性并将它们显示给用户,要么告诉用户“抱歉,发生了一些不好的事情”。
请注意,您的用户需要阅读详细消息并决定如何处理这些消息。很可能他们要么忽略这些消息,要么打电话给某人询问如何应对这些消息。确保记录足够的信息来接听电话。有时候,你最好不要显示一条消息,上面写着“请打电话给那些可以找出问题所在的人”。