1

我看着这个相当广泛,我已经找到了以下内容:顶级异常处理

  1. 你可以做一些聪明的东西,通过实施基本捕捉最错误请参阅Andreas Knudsen的解决方案。
  2. 在用户控件的错误事件永远不会被解雇,详情请参阅这里:http://weblogs.asp.net/vga/archive/2003/06/16/8748.aspx

我无法找到是赶上回发事件发生的错误,如一个按钮的点击事件的任何一般的方式,在Web部件或用户控制级别。通常我的意思是我可以在基类中实现的东西。

我知道我应该在代码中做适当的尝试/捕获,但对于大型团队,我想确保Web部件从不崩溃页面,但始终显示一个很好的消息,并允许执行继续在页面上的其他Web部件。

我不认为这是可能的,但我会被证明是错误的。

感谢, 比约恩·

回答

0

认为这是可能的,但你必须要解决的事实,当asp.net分配回发事件也可能不关心你的用户控制定义,而是只关心显式实现IPostBackEventHandler的控件(如按钮/下拉等)

对于页面,您可以重写和尝试/捕获RaisedPostBackEvent像其他方法一样。 (如果你想要一个通用的页面异常处理设置(如果你想这样做,那么请重新考虑)我在最后一个项目中花费了太多时间,基本上重新实现了默认的asp.net异常处理逻辑来实现它。恶魔的细节)

你可以做的是在你的系统中有一个基本页面,所有的页面都继承自哪个页面,并覆盖RaisePostBackEvent(source,eventArgs)。在这个方法中,你可以看到源代码是否继承了你的异常处理基本控制,或者如果它包含在这样做的控件中(导航父图) 如果它包含一个,则围绕对base.Raise ....的调用进行try/catch(请参阅代码在 Transparent generic exception handling for asp.net/MOSS2007 (with code)),并在您找到的第一个候选人上调用异常发生的方法,如果确实有任何exc发生。

+0

感谢您的回答。这是一个有趣的想法,但不幸的是,我现在没有时间去尝试(项目压力)。我会有一天,但它会很酷,如果它的工作。 – Bjoern 2010-09-16 12:01:21

+0

我会给你怀疑的好处:) – Bjoern 2010-09-16 12:01:46