尝试和尝试的地点和数量我应该写一个块?

时间:2013-02-06 15:58:50

标签: c# asp.net asp.net-mvc

我总是想知道我的应用程序在什么级别上写try-catch

DAL?缓存? BL? UI-逻辑?

如果我写日志并重新抛出

我应该在每个函数中使用try-catch吗?

aswuming任何一个函数都可以有一个我没想到的异常

2 个答案:

答案 0 :(得分:1)

嗯,这取决于。在UI层中,我在Application_Error中全局捕获所有错误,并相应地处理这些错误。我只是尝试捕获错误,我不想冒泡到UI并导致重定向到通用错误页面。这对我报告大多数(如果不是全部)错误都很有效。

有些人处理错误的方式不同;他们将捕获业务层中的错误,并记录并从BLL返回它们,或者记录并重新抛出一般错误。例如,查看Enterprise Library Exception block如何处理错误。

你甚至可以使用像PostSharp这样的AOP库来附加你想要处理错误的所有对象,或者使用MVC的异常过滤来处理错误。

答案 1 :(得分:0)

我个人倾向于使用try-finally方式而不是try-catch块(除了一些外部数据源调用)

我为我的代码的端点保留try-catch,我可以在其中记录错误堆栈,并在必要时处理错误消息。

另一方面,请务必致电throw;,以免吞下任何例外情况。