如果我有一个多层Winform应用演示文稿、业务和数据层,例如,我遇到一个错误,在业务层或数据层,用于其唯一合乎逻辑的行动是登录的错误,并告知用户已发生错误应该在哪里的记录?

我应该把该方法在商务和数据层中的试图抓住块就像这样

try
{
    DoSomethingThatMightGiveErrors();
}
catch(Exception ex)
{
    logger.log(ex.ToString());
    throw;
}

或者我应该只是我们的错误泡了介绍层和处理记录和通知用户那里吗?

有帮助吗?

解决方案

我把记录在业务层电平,然后重新抛出的误差。如果该层在未来的另一个项目中使用,它已经做了记录。重新抛出该异常允许该层的消费者错误转换成友好的消息。

编辑:我认为这取决于那种记录的一点:如果你登录到一个中央数据库,这是独立于用户界面,把记录在业务逻辑层。如果记录是特定于用户界面,例如写入日志文件的应用程序的目录,把它的UI。

其他提示

如果你正在谈论未处理(相关非经营性)的异常只是让他们传播到UI层,在那里你能赶上/日志/通知用户。

我的喜好是将它在业务层。

  1. 如果你改变的性质 表示层(即它要web表单)的记录 代码不需要重复。
  2. 所有你的记录将是一个很容易找到和维持,因为你总是可以扫描这类业务的列表方法和检查/调整它们用于记录。如果你把记录在您的介绍层,记录的电话将被分散在一个单一的业务类可能有的电话记录了在许多不同的介绍课程。

这取决于您的要求一样,例如,你想要把你的用户访问您的应用程序显示通过冒泡的表示层了错误的结果呢?会发生意想不到的情况多久这些错误?

这是一个加载的问题和每一个应用程序是不同的,最基本的事情,我可以说是使用try catch子句中的业务/数据层,并确保你告知某些情况下,用户将错误可以预期(你做的文件有这样的?)

除此之外,来自最终用户的需求和反馈检查...如果你允许的误差出现在表示层上,最坏的情况是用户将拒绝与它合作为错误喷涌而出结果...

希望这可以帮助你, 最好的祝福, 汤姆。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top