c# - 分层架构中的异常处理

标签 c# .net architecture exception

我们正在重构(当然还有重新设计)我们在分层设计中的服务。 我们有服务操作层 (BLL)、网络抽象层 ->(处理网络代理)、数据抽象层。 但是我们对我们的异常处理策略有点困惑。

  1. 我们不想将太多来自 BLL 的信息暴露给外界。 (从其他层到bll都可以)
  2. 我们不想用 try catch 栈弄乱代码
  3. 我们不想在 catch block 中混淆异常处理代码(如日志记录、电子邮件等)

有人可以发布一些我们可以用来设计简单异常处理框架的代码示例或文献指南吗?

最佳答案

We don't want to expose too much information from BLL to outside world.
(from other layers to bll is fine)

BLL 本身定义了公开的内容。确保您展示的内容是为了让人们看到。

We don't want to clutter the code with try catch stacks

那就不要了。异常(exception)就是异常(exception)。不要使用它们来控制流量。让他们爆炸吧。

We don't want to mess the exception handling code(like logging, emailing etc) in catch blocks

如果您的逻辑不依赖于异常处理(它不应该)并且您的 code guards itself (这很重要,您的应用程序应该总是在无效状态下爆炸而不是进一步工作。否则 - 很难理解是什么原因),那么只用 1 个包装整个应用程序就足够了在必要时转储堆栈跟踪的错误处理程序。

例如- 在 .net 中,您可以使用订阅 appdomain unhandled exception event为此。

我个人使用ELMAH对于我的 Web 应用程序 - app.config 中只有几行,我有很好的错误日志,存储在 sqlite 中,可以从 Web 应用程序本身轻松访问。这就是我得到的所有错误处理。

关于c# - 分层架构中的异常处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5772237/

相关文章:

c# - 如何在 wpf 中更改数据网格的单个单元格颜色?

c# - 如何在wpf中延迟调用文本框的textchanged事件

GoLang 在运行时强制计算,而不是编译时

.net - WPF:隐形控制(?)

asp.net - 一个现代的n层asp.net Web应用程序示例?

architecture - 榆树 0.17 : How to subscribe to sibling/nested component changes

c# - Application.Current.Shutdown() 没有杀死我的应用程序

c# - 在执行重建之前不会发生更改

c# - 方法返回一个接口(interface)

.net - F# 基础知识 : turning NameValueCollection into nice string