【发布时间】:2017-08-27 18:05:43
【问题描述】:
在asp.net应用程序中,所有发生且不在try catch中的异常都可以由application_error处理。
如果我们只需要记录异常及其堆栈跟踪,并且不需要在 catch 内部做出任何其他决策/逻辑,为什么要将 try catch 放在 application/bl 或 dal 层函数中?是否有任何理由将 try/catch 与每个数据库调用函数一起使用?
例如,我们在 DAL 层中有数百个函数执行以下代码:
try
{
//open db connection, execute stored procedure
}
catch
{
//log error
}
如果我们从存储过程或打开数据库连接中得到任何异常,我们会得到一个异常,但除了记录这些错误之外,我们没有做任何事情。我们没有非常关键的数据存储/检索要求。我们正在记录错误只是为了得到警报并稍后修复它。在每个这样的函数中加入 catch 是否正确?
【问题讨论】:
-
无论如何使用
try和catch都是有原因的。这只是编程的基本部分。所以,答案是肯定的。 -
那是什么原因?特别是通过将日志记录异常放在 application_error 函数中我们无法实现的目标?
-
不要让您的代码回退到 application_error。每个错误都应该在它产生的范围内处理。 application_error 是你最后的后备,理论上不应该达到。
-
我得到了理论部分。但这背后的原因是什么?如果我把东西放在 application_error 中,我看到了不使用多个函数的 try catch 的好处。我想了解将其作为功能级别的好处?
-
异常意味着有些事情没有完成。如果某些事情没有完成,您的业务流程就会失败。如果您的业务流程失败,您需要了解它并在该代码范围内处理它,而不是在 application_error 中。
标签: c# asp.net exception exception-handling