我对此进行了广泛的研究,并且我发现了以下内容:
我找不到的是捕获回发事件中发生的错误的任何一般方法,例如按钮的单击事件,Web部件或用户控件级别。我的意思是一般是我可以在基类中实现的东西。
我知道我应该在我的代码中进行正确的try / catch,但对于大型团队,我希望确保Web部件永远不会崩溃页面,但总是显示一条好消息并允许执行继续对于页面上的其他Web部件。
我不认为这是可能的,但我爱被证明是错误的。
谢谢, 比约恩
答案 0 :(得分:0)
我认为这是可能的,但你必须解决这样一个事实:当asp.net分发回发事件时,它不关心你的用户控件定义,而只关心显式实现IPostBackEventHandler的控件(如按钮/下拉等)
对于页面,您可以覆盖并尝试/捕获RaisedPostBackEvent,就像其他方法一样。 (如果你想要一个通用的页面异常处理设置。(如果你想要这个,那么请重新考虑。我在上一个项目上花了太多时间基本上重新实现了默认的asp.net异常处理逻辑,只是为了让它工作。恶魔的细节)
你可以做的是在你的系统中有一个基页,所有页面都继承,并覆盖RaisePostBackEvent(source,eventArgs)。在此方法中,您可以查看源是否继承自异常处理基本控件,或者它是否包含在执行此操作的控件中。 (导航父图) 如果它被一个包含,那么在base.Raise ....的调用周围做一个try / catch(参见下面的代码) Transparent generic exception handling for asp.net / MOSS2007 (with code))并且如果确实发生任何异常,则在您找到的第一个候选人上调用exceptionhappened方法。