我总是想知道我在我的应用程序的哪个级别编写try-catch
?
达尔?缓存?BL?用户界面逻辑?
如果我写日志并重新抛出它
我应该在每个函数中使用 try-catch 吗?
aswuming 任何功能都可能有我没想到的异常
我总是想知道我在我的应用程序的哪个级别编写try-catch
?
达尔?缓存?BL?用户界面逻辑?
如果我写日志并重新抛出它
我应该在每个函数中使用 try-catch 吗?
aswuming 任何功能都可能有我没想到的异常
这要看情况。在 UI 层,我在 Application_Error 中全局捕获所有错误,并相应地处理这些错误。然后我才尝试捕获我不想冒泡到 UI 并导致重定向到通用错误页面的错误。这对我报告大多数(如果不是全部)错误非常有效。
有些人处理错误的方式不同;他们将在业务层捕获错误,然后记录并从 BLL 返回它们,或者记录并重新抛出一般错误。例如,查看Enterprise Library Exception 块如何处理错误。
您甚至可以使用 PostSharp 之类的 AOP 库来附加到您想要处理错误的所有对象,或者也可以使用 MVC 的异常过滤来处理错误。
我个人倾向于使用 try-finally 而不是 try-catch 块(除了一些外部数据源调用)
我为代码的端点保留 try-catch,在那里我可以记录错误堆栈,并在必要时处理错误消息。
附带说明一下,一定要打电话throw;
,以免吞下任何异常。