2009-12-21 68 views
1

如果我有一个多层Winform应用程序,例如演示文稿,业务和数据层,并且在业务层或数据层中遇到错误,是记录错误并通知用户发生错误的地方应该在哪里进行记录?多层WinForm应用程序中的错误处理

我应该把公司在经营中尝试catch块的方法和数据层,像这样

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

或者我应该让错误冒泡的表示层和处理记录和通知用户那里?

回答

3

我把日志记录在业务层级,然后重新抛出错误。如果这个图层将来在另一个项目中使用,它已经在进行日志记录。重新生成异常允许该层的消费者将错误转换为友好的消息。

编辑:我认为这取决于记录的种类:如果您登录到独立于UI的中央数据库,请将日志记录放入业务逻辑层。如果日志记录特定于用户界面,例如将日志文件写入应用程序的目录,请将其放入用户界面。

0

这取决于您的要求,例如,您是否想要将用户从应用程序中关闭,因为通过冒泡到表示层显示错误?这些错误在意外情况下多久出现?

这是一个加载的问题,每个应用程序都是不同的,我可以说最基本的东西是在业务/数据层中使用try catch子句,并确保通知用户某些情况下可能出现错误预计(你有这在文档?)

除此之外,检查与最终用户的要求和反馈...如果你让错误出现在表示层,最坏的情况是用户将拒绝由于错误喷出...

希望这可以帮助你, 最好的问候, 汤姆。

2

如果您正在讨论未处理的(与业务无关的)异常,只需让它们传播到可以捕获/记录/通知用户的UI层即可。

+0

这就是我会说的。但Gerrie的回答也很好 – 2009-12-21 18:13:37

1

我的选择是将其放置在业务层中。

  1. 如果你改变 展示层(即 的WinForms到Web表单)的性质日志 代码不需要被复制。
  2. 所有的日志记录都会更容易找到和维护,因为您总是可以扫描业务类的方法列表并检查/调整日志记录。如果将日志记录放置在表示层中,日志记录调用将分散到各个地方 - 单个业务类可以在许多不同的表示类中进行日志记录调用。
相关问题