如何捕获ASCX控件上引发的异常(而不是背后的代码)?
|
我有一个带有许多ASCX控件的ASPX大页面。如果控件引发异常,则应记录该异常并仅隐藏自身。所有其他控件仍应呈现。
如何处理从前端文件引发的单个ASCX的异常(ASCX,而不是背后的代码)?例如:试图使用
<%= MethodThatThrowsANullReferenceException() %>
语法引用无效属性的控件。
显然,在Global.asax中使用通用错误处理程序方法无法解决问题。我需要处理单个控件上的异常。
没有找到相关结果
已邀请:
5 个回复
丧泉缝锋
嘘伪
模块是用于存储会话变量的静态类。 CurrentState是ModuleShell用来记录其名称的变量。 我们唯一获得的aspx中的Page_Error,将获得尝试加载的最后记录的ModuleShell。由于任何异常都会停止页面呈现,因此最后一个将其名称记录到主页面的ModuleShell可能是无法正确加载的页面。 这是一个草率的解决方案,但对模块开发人员是透明的。
辰炔诚薯
街区
级或or5ѭ 水平。前两个发生的正确 在页面的代码中,以及 应用程序事件保存在内部
。
对象包含 有关错误的信息,以及 事件在整个过程中冒泡 层,它进一步包裹 详情。粗略地说,
例外包含
例外 在ѭ7的基础上扩展, 在第一时间触发了起泡 地点。 如果用户控件内发生异常,则将其捕获到用户控件内的唯一方法是在
块内进行处理。 我认为可以捕获到这样的异常的最低级别是下一个级别-
级别:
方法甚至可以防止异常再冒泡到
。但是不幸的是,随后引发了未处理的异常,页面处理停止,并且错误处理开始了。这意味着页面的渲染也将停止(因此,您不会在导致此异常的控件旁边看到控件)。
臀博
块。
裸雷胜檀哭
这样可以解决任何前端渲染问题。如果父页面希望显示一个不错的错误消息,则可以处理ControlCrashed事件。