我处理异常的方法是在发生异常的客户端页面上为我的母版页设置控件的值:
private void deleteUser(int userid)
{
try
{
ImajUser u = new ImajUser(userid, true);
u.Delete();
lblerr.Text = "User was deleted successfully.";
lblerr.ForeColor = System.Drawing.Color.Green;
}
catch (Exception ex)
{
this.Master.ErrorTitle.Text = "Delete User";
this.Master.ErrorMessage.Text = String.Format("Error actioning request: [ {0} ]", ex.Message);
this.Master.pnlErrorBG.Visible = true;
this.Master.pnlErrorModal.Visible = true;
}
}
当我测试它时(上次关闭数据库并尝试删除),我的catch块无故障执行,但我得到第一次机会异常并且调试器完全停止:
类型' System.Data.EntityException'的第一次机会异常。发生在System.Data.Entity.dll中 该程序' [2108] WebDev.WebServer40.EXE:Managed(v4.0.30319)'已退出代码-2147023895(0x800703e9)。
我以前从未见过这个。我不知道是什么原因引起的,我也不知道如何修复它......
任何帮助将不胜感激!
编辑
我设置的用于访问母版页控件的属性是:
public virtual Label ErrorTitle { get { return lblErrorAction; } }
public virtual Label ErrorMessage { get { return lblErrorMessage; } }
public virtual Panel pnlErrorBG { get { return ErrorBackground; } }
public virtual Panel pnlErrorModal { get { return pnlErrorModal; } }
这些引用控件:
<asp:Panel runat="server" id="ErrorBackground" visible="false"> </asp:Panel>
<asp:Panel runat="server" id="ErrorModal" visible="false">
<asp:Label runat="server" ID="lblErrorAction" CssClass="lblerrortitle"></asp:Label>
<asp:Label runat="server" ID="lblErrorMessage"></asp:Label>
<asp:Button runat="server" ID="btnErrorAction" CssClass="button" Text="Retry" OnClick="btnErrorAction_Click" />
</asp:Panel>
编辑2
所以我尝试将控件移动到实际发生异常的页面,并且100%有效,而在母版页上使用控件会导致错误。
答案 0 :(得分:1)
这是Debug / Exceptions
中的Visual Studio设置。 [x] Thrown
属性告诉调试器在第一次机会异常时停止。取消选中该复选框,仅停止第二次机会例外。
BTW:第一次机会异常不会终止进程。只有第二次机会例外。因此,您应该可以再次按“播放”按钮(Continue
)或使用 F5 键继续。