【发布时间】:2012-02-27 12:28:28
【问题描述】:
我有一个关于如何正确处理错误的问题。我正在开发一个三层应用程序。如果在数据层上创建了错误,我想将错误传递给业务层并在那里进行处理。实现这一目标的最佳方法是什么?我正在使用 .net 2.0 和 Visual Studio 2005。
感谢您的建议 杰森
【问题讨论】:
我有一个关于如何正确处理错误的问题。我正在开发一个三层应用程序。如果在数据层上创建了错误,我想将错误传递给业务层并在那里进行处理。实现这一目标的最佳方法是什么?我正在使用 .net 2.0 和 Visual Studio 2005。
感谢您的建议 杰森
【问题讨论】:
在您的业务层中使用 Try...Catch 在 Try 中调用您的数据层。
Try
'call data-layer
Catch ex As Exception
'deal with exception / log
End Try
如果您仍想在数据层中使用 Try...Catch,则需要在 Catch 中使用 Throw(以保留堆栈跟踪)或 Throw ex,否则请勿在数据层中使用 Try...Catch完全没有。
Try
data = dataLayer.GetData()
Catch ex As Exception
Throw
End Try
【讨论】:
Throw 而不是Throw ex 来保留堆栈跟踪。 stackoverflow.com/questions/730250/… 否则,您不会看到异常实际上是在 DoWork 中引发的,甚至是在从 DoWork 调用的“更深层”方法中。