在vb.net中捕获SQL异常

在vb.net中捕获SQL异常,sql,vb.net,exception,exception-handling,Sql,Vb.net,Exception,Exception Handling,是否有方法捕获项目中的所有SQL异常?我有几个GridView和多个SqlDataSource,当用户输入错误或列中输入错误时,大多数错误都会发生。那么,如何阻止/Project页面中出现服务器错误?简单的答案是,在将输入发送到SQL Server之前验证输入。这样,就不会抛出任何异常 如果您希望集中处理所有错误(这不是解决此特定问题的理想解决方案),您可以在web.config文件中设置自定义错误处理。我建议在web应用程序的Global.asax中捕获应用程序错误事件。捕获所有异常的最简单方

是否有方法捕获项目中的所有SQL异常?我有几个GridView和多个SqlDataSource,当用户输入错误或列中输入错误时,大多数错误都会发生。那么,如何阻止/Project页面中出现服务器错误?

简单的答案是,在将输入发送到SQL Server之前验证输入。这样,就不会抛出任何异常


如果您希望集中处理所有错误(这不是解决此特定问题的理想解决方案),您可以在web.config文件中设置自定义错误处理。

我建议在web应用程序的Global.asax中捕获应用程序错误事件。

捕获所有异常的最简单方法是在Global.asax中的应用程序错误事件处理程序中执行,并利用web.config自定义错误处理来显示友好的错误页面。mikeware已经提到了这些


如果你想把所有的验证逻辑放在一个地方,或者把它们从你的ASPX页面中分离出来,你可以通过让你的网站多层化,并把你的自定义验证逻辑放在中间层来实现。通过使用此方法,无论哪个页面访问您的数据,您的数据都将在该层中得到验证。您还可以使用objectdatasource执行选择/插入/更新/删除操作。显然,这需要一些工作,但它可以清楚地将您的数据和UI分开。

但是,我必须同意Mark的回答,在SQL调用之前,您必须验证输入,然后才能将其与Mark的回答结合起来,这样,我错过的任何错误都会被此捕获?实际上,我的建议会捕获页面中的错误并协调工作,但是web.config中的自定义错误处理只允许您将丑陋的错误页面替换为自定义(更用户友好)的错误页面。(您可以在其中添加一些代码,但我不确定您是否能够处理该页面上的异常)我可能会保持页面的原样,并尝试捕获尽可能多的代码。这很有意义,但是我如何检查用户输入的数据是否有效?知道什么是有效的,并在将其传递给SQL Server之前测试用户输入的数据。必须有一种方法来避免为我拥有的20个SQL数据源中的每个单元格硬编程正确的参数。不是真的,对不起。这是软件开发中单调乏味的部分,而不是单调乏味的开发。我将使用sp_列来获取每个列的数据类型,并进行检查。