如何处理整个页面中的所有SQL异常

时间:2010-07-18 05:37:26

标签: c# asp.net visual-studio-2008 exception-handling

“我不想使用默认错误页面tachnique,因为我不希望网页重定向!”

是的,有尝试和捕获

是的,有办法为控件添加异常处理mathods覆盖

但我需要的是,

它可能只是一个简单的sql命令,它可能是一个控件,如formview,它可能是一个控件,如datagrid,无论它是什么,当在数据库的表中进行非法输入时,

“大错误页面不应该出现!!”

代替

同一页面顶部的标签(执行非法操作的地方)应显示错误,如

“由”此控件“引起的错误,错误消息为”此字段中不允许为空“等等。

谢谢

注意: - 我要求完整的代码!好的,请指导我,谢谢

2 个答案:

答案 0 :(得分:0)

我认为最重要的是,您需要先验证数据,然后再尝试将数据放入数据库。

每个控件都包含自己的验证挂钩。检查MSDN上正在使用的控件的文档,以了解如何正确验证其中包含的数据。在验证过程中,您可以确定包含错误数据的控件并更新标签。

默认错误页面不是错误处理技术。当您的应用程序失败时,这是一个故障保护。您对数据库的更新会抛出愚蠢的异常 - 您的代码永远不会发生的异常 - 您甚至不应该处理它们 - 它们代表您的代码中需要修复的错误。

简单地抓取普通用户输入而不进行验证,尝试将其输入数据库,然后尝试检测问题是一种灾难。如果您这样做,我希望您至少将数据库命令包装在事务中,否则您最终会知道谁知道您的数据库中的内容。

答案 1 :(得分:0)

在SQL查询周围使用trycatch构造:如果catch块中的代码被命中,则调用一个使您的错误标签可见的方法,并设置一些错误文本与失败的代码部分相关。

这是解决这个问题最干净,最广泛接受的方式;虽然你也应该有分离和封装。用户界面(例如,ASP.NET pagebehind代码)通常不应直接调用数据库;它会调用业务逻辑方法或数据访问层方法来更新数据库。但是,您仍然希望捕获从这些层抛出的异常。您可以做的“最好”是创建一个管理“错误”标签状态的方法。

希望有所帮助。