我总是想知道我的应用程序在什么级别上写try-catch
?
DAL?缓存? BL? UI-逻辑?
如果我写日志并重新抛出
我应该在每个函数中使用try-catch吗?
aswuming任何一个函数都可以有一个我没想到的异常
答案 0 :(得分:1)
嗯,这取决于。在UI层中,我在Application_Error中全局捕获所有错误,并相应地处理这些错误。我只是尝试捕获错误,我不想冒泡到UI并导致重定向到通用错误页面。这对我报告大多数(如果不是全部)错误都很有效。
有些人处理错误的方式不同;他们将捕获业务层中的错误,并记录并从BLL返回它们,或者记录并重新抛出一般错误。例如,查看Enterprise Library Exception block如何处理错误。
你甚至可以使用像PostSharp这样的AOP库来附加你想要处理错误的所有对象,或者使用MVC的异常过滤来处理错误。
答案 1 :(得分:0)
我个人倾向于使用try-finally方式而不是try-catch块(除了一些外部数据源调用)
我为我的代码的端点保留try-catch,我可以在其中记录错误堆栈,并在必要时处理错误消息。
另一方面,请务必致电throw;
,以免吞下任何例外情况。