【问题标题】:Catching SQL Exceptions in vb.net在 vb.net 中捕获 SQL 异常
【发布时间】:2011-03-31 02:45:51
【问题描述】:

有没有办法捕获项目中的所有 SQL 异常?我有几个 gridviews 和多个 sqldatasources,当用户输入错误或在错误的列中时,大多数错误都会发生。那么如何阻止 /Project 页面中的 Server Error 出现呢?

【问题讨论】:

    标签: sql vb.net exception exception-handling


    【解决方案1】:

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

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

    【讨论】:

    • 有道理,但是如何检查用户输入的数据是否有效?
    • 知道什么是有效的,并在将用户输入的数据传递给 SQL Server 之前对其进行测试。
    • 必须有一种方法可以避免为我拥有的 20 个 sqldatasource 中的每个单元格硬编程正确的参数。
    • 不是真的,抱歉。这是软件开发中乏味的部分。
    • 不适合繁琐的开发。我将使用 sp_columns 获取每列的数据类型并进行检查。
    【解决方案2】:

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

    【讨论】:

    • 但是,我必须同意马克的回答,您必须在 SQL 调用之前验证输入
    • 有没有办法将它与 Marks 答案结合起来,所以我错过的任何错误都会被它捕获?
    • 实际上,我的建议会在页面中捕获错误并相应地工作,但是 web.config 中的自定义错误处理只会让您将丑陋的错误页面替换为您的自定义(更用户友好)错误页面. (您也许可以在其中添加一些代码,但我不确定您是否可以处理该页面上的异常)
    • 我可能会直接离开页面并尝试尽可能多地捕获。
    【解决方案3】:

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

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

    【讨论】:

      猜你喜欢
      • 2016-11-16
      • 1970-01-01
      • 2017-09-26
      • 2010-09-20
      • 1970-01-01
      • 2010-10-12
      • 2017-12-06
      • 2017-02-23
      • 1970-01-01
      相关资源
      最近更新 更多