自定义异常与实体框架和存储库模式
问题描述:
我下面这个ASP.NET的教程作为指导:自定义异常与实体框架和存储库模式
我创建了一个自定义错误,以防止插入重复记录和更新
Public Class DuplicateAgencyException
Inherits Exception
Public Sub New(ByVal message As String)
MyBase.New(message)
End Sub
End Class
我已经创建了用于复制检查上插入或更新验证方法:
Public Sub ValidateAgencyName(ByVal agency As agency_temp)
If Not IsNothing(agency) Then
Dim duplicateAgency As agency_temp = AgencyRepository.GetAgencyByName(agency.agency_name).FirstOrDefault()
If Not IsNothing(duplicateAgency) AndAlso duplicateAgency.agency_id <> agency.agency_id Then
Throw New DuplicateAgencyException(String.Format("Agency: {0} already exists.", duplicateAgency.agency_name))
End If
End If
End Sub
我运行一个单元测试插入一条记录,并有意插入一个副本,并引发正确的错误。现在我需要用显示这些数据的ObjectDataSource来处理这个错误,例如OnInserted和OnUpdated,但我甚至无法达到这一点。当我插入记录时,我得到错误助理告诉我DuplicateAgencyException未被用户代码处理。我需要一个尝试......赶上那里吗? (我曾尝试过,但无济于事)。
答
我相信你需要将你的异常包装在你所提到的try catch块中提到的事件引用的方法中。你应该包装现有的代码,像这样
MethodName(params)
《
try 《 /// existing code
》
catch (ExceptionType ex) 《
/// error handling code
》
》
如果您发布事件处理代码和ASPX我可以更具体。请原谅任何errots在我的手机上写这个。
+0
我以为ASP.Net中我不应该使用try/catch。我应该让异常流入Global.asax,以便在整个应用程序中进行处理。另外,它似乎与我上面发布的代码没有多大关系。任何错误都会停止应用程序并在Visual Studio中打开错误助理,这使我认为这是配置问题的一些方面。我的错误配置是非常基本的: – 2012-07-28 18:53:15
这是一个提示吗? – 2012-07-26 19:16:25