【问题标题】:How to handle an exception is thrown by Select method of ObjectDatasource?ObjectDatasource的Select方法抛出异常如何处理?
【发布时间】:2011-07-25 21:02:09
【问题描述】:
我有一个连接到 ObjectDatasource 的 Select 方法,这个方法可能会抛出异常,我不知道如何处理它!
问题是我没有控制它。页面渲染后,ObjectDatasource直接调用select方法,直接抛出未处理的异常。
另一方面,如果它有问题,我不想让它返回空集合,因为集合可能是空的而没有问题。
那么,我在哪里可以处理异常?
还有其他选择吗?
【问题讨论】:
标签:
.net
asp.net
objectdatasource
【解决方案1】:
查看 ObjectDataSource 上的 eventargs。应该有一个 e.Exception 和 e.Results,您可以查询选择的成功/错误。
protected void MyOds_Selected (object sender, ObjectDataSourceStatusEventArgs e)
{
if (e.Exception != null)
{
// handle exception here.
...
//tell the ObjectDatasource that the exception is handled
//and don't rethrow it.
e.ExceptionHandled = true;
}
}
【解决方案2】:
您应该订阅ObjectDataSource.Selected 事件。
<asp:ObjectDataSource OnSelected="ObjectDataSourceStatusEventHandler" />
检查@Kirill 提到的事件中的异常,并可能隐藏网格视图并向用户显示一些错误消息。检查这个link。
【解决方案3】:
如果我理解正确,您的页面有时会在 ObjectDataSource 上调用 Select(),并且此调用有时会因异常而失败。
现在,您处理此异常的位置在某种程度上取决于您的情况。一般来说,您应该尽早在有意义的地方尝试处理异常,也就是您可以做一些有用的事情来响应错误。例如,对于可能处于可以将用户重定向到错误页面的网站。
请注意,虽然这个早期有意义的点实际上可能很晚,但如果您将用户重定向到错误页面,它可能与 ui(或页面)层一样高。您可能会在更早的时候尝试捕获异常并重试请求,如果失败,则重新抛出异常
很抱歉这个 vauge awnser,但这真的取决于 :)