0

(我实际上正在使用 Ektron CMS,并且正在使用Widgets,这是用户控件的一个非常简单的扩展)。

问题:我有一个包含许多小部件的网页。如果这些小部件之一发生异常,页面将停止并且用户会收到服务器错误。我想在小部件中有未处理的异常来记录异常,停止显示该小部件并允许页面继续。

例如,您在每个页面上都有一个天气小部件,它通过网络服务获取数据。如果 Web 服务向您发送格式错误的 XML,您希望该站点仍然可用。

可能的解决方案:
计划 A)在每个小部件中,将 init 或显示函数的内容包装在 Try-Catch 语句中。
计划 B)创建一个扩展 IWidget 的新 IRobustWidget 接口,并在其中执行 Try-Catch。

这两个选项对我来说似乎有点“肮脏”,因为我已经读过通用catch (exception)语句有点反模式。我倾向于 B 计划,因为这似乎更加模块化。

  • 我错过了其他选择吗?
  • 在这方面通用 Try-Catch 可以吗?


(我也在 E​​ktron 论坛上记录了这个)

4

2 回答 2

2

您通过 Web 服务加载数据的事实让我想知道您是否应该通过 ajax-loaded<div><iframe>;异步加载此数据。即小部件是(/正在)在单独的请求中下载的。这为您带来了两个好处:

  • 通过获取数据,核心页面根本不会延迟- 应该在主页完成后短暂加载
  • 如果面板无法加载......嗯(假设它很好但不是关键)

缺点是额外的往返,但与其他发生的事情相比,这并不一定会造成问题。

于 2010-11-02T11:36:56.377 回答
0

我找到了我想要的东西 ——在 ASP.NET UserControls 中捕获未处理的异常

我也意识到我需要决定我需要关注哪个事件(渲染、加载或自定义 SetDisplay 函数)

于 2010-11-03T00:34:33.260 回答