C#中如何使用“using”捕获异常

2024-02-07

鉴于此代码:

using (var conn = new SqlConnection("..."))
{
    conn.Open();
    using (var cmd = conn.CreateCommand())
    {
        cmd.CommandText = "...";
        using (var reader = cmd.ExecuteReader())
        {
            while (reader.Read())
            {
                // ...
            }
        }
    }
}

我习惯于为数据访问编写 try/catch/finally 块,但是,我正在接触“使用”,这似乎是一种更简单的方法。但是,我正在尝试找出如何捕获可能发生的异常。

您能给我一个如何捕获异常的例子吗?

编辑添加:

我被引导相信“使用”是我的 try/catch/finally 块的替代品。我知道 using 不会捕获异常。那么这个怎么替代呢?


using不是为了捕获异常而设计的;它旨在为您提供一种简单的方法来包装try/finally围绕需要处理的物体。如果您需要捕获并处理异常,那么您需要将其扩展为完整的try/catch/finally或者放一个包含try/catch围绕整个事情。


回答您的编辑(是using的替代品try/catch/finally?) 那么不,不是。大多数时候,当使用一次性资源时,您不会立即处理异常,因为通常您无能为力。因此,它提供了一种方便的方法来确保资源被清理,无论您想要做什么是否有效。

通常,处理一次性资源的代码工作级别太低,无法决定失败时的正确操作,因此异常会传播给可以决定采取什么操作的调用者(例如重试、失败、记录等) .)。 您倾向于使用的唯一地方catch如果您要转换异常(我认为这就是您的数据访问层正在执行的操作),则使用一次性资源进行阻止。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C#中如何使用“using”捕获异常 的相关文章

  • Mono 无法保存用户设置

    我在 Mono Ubuntu 上保存用户设置时遇到问题 这是代码示例 private void Form1 Load object sender EventArgs e string savedText Properties Setting
  • MEX 文件中的断言导致 Matlab 崩溃

    我正在使用mxAssert 宏定义为matrix h在我的 C 代码中 mex 可以完美编译 当我调用的 mex 代码中违反断言时 该断言不会导致我的程序崩溃 而是导致 Matlab 本身崩溃 我错过了什么吗 这是有意的行为吗 当我查看 M
  • 添加对共享类的多个 WCF 服务的服务引用

    我正在尝试将我的 WCF Web 服务拆分为几个服务 而不是一个巨大的服务 但是 Visual Studio Silverlight 客户端 复制了两个服务共享的公共类 这是一个简单的例子来说明我的问题 在此示例中 有两个服务 两者都返回类
  • 在 OpenCL 中将函数作为参数传递

    是否可以在 OpenCL 1 2 中将函数指针传递给内核 我知道可以用C实现 但不知道如何在OpenCL的C中实现 编辑 我想做这篇文章中描述的同样的事情 在 C 中如何将函数作为参数传递 https stackoverflow com q
  • 捕获 foreach 条件中抛出的异常

    我有一个foreach在 foreach 本身的条件下循环期间中断的循环 有没有办法try catch抛出异常然后继续循环的项 这将运行几次 直到异常发生然后结束 try foreach b in bees exception is in
  • 自动删除主键序列中的间隙

    我正在创建一个网页 该网页根据用户操作将数据存储到 MySQL 数据库中 数据库有很多行 行的主键是列 rowID 它只是按顺序对行进行编号 例如 1 2 3 4 用户可以选择删除行 问题是当用户删除最后一行以外的行时 rowID 中有一个
  • 调试内存不足异常

    在修复我制作的小型 ASP NET C Web 应用程序的错误时 我遇到了 OutOfMemoryException 没有关于在哪里查看的提示 因为这是一个编译时错误 如何诊断此异常 我假设这正是内存分析发挥作用的地方 有小费吗 Thank
  • 为什么 BOOST_FOREACH 不完全等同于手工编码的?

    From 增强文档 http www boost org doc libs 1 48 0 doc html foreach html foreach introduction what is literal boost foreach li
  • C++派生模板类继承自模板基类,无法调用基类构造函数[重复]

    这个问题在这里已经有答案了 我试图从基类 模板 继承 派生类也是模板 它们具有相同的类型 T 我收到编译错误 非法成员初始化 Base 不是基类或成员 为什么 如何调用基类构造函数 include
  • 为什么 FTPWebRequest 或 WebRequest 通常不接受 /../ 路径?

    我正在尝试从 ftp Web 服务器自动执行一些上传 下载任务 当我通过客户端甚至通过 Firefox 连接到服务器时 为了访问我的目录 我必须指定如下路径 ftp ftpserver com AB00000 incoming files
  • 两组点之间的最佳匹配

    I ve got two lists of points let s call them L1 P1 x1 y1 Pn xn yn and L2 P 1 x 1 y 1 P n x n y n 我的任务是找到它们点之间的最佳匹配 以最小化它
  • std::bind 重载解析

    下面的代码工作正常 include
  • SQL Server 2008 错误 233

    我正在使用以下 sql 脚本在 SQL Server 2008 中创建新登录名 CREATE LOGIN xyz WITH PASSWORD xyz DEFAULT DATABASE master DEFAULT LANGUAGE us e
  • gdb查找行号的内存地址

    假设我已将 gdb 附加到一个进程 并且在其内存布局中有一个文件和行号 我想要其内存地址 如何获取文件x中第n行的内存地址 这是在 Linux x86 上 gdb info line test c 56 Line 56 of test c
  • 无法使用 Ninject 将依赖项注入到从 Angular 服务调用的 ASP.NET Web API 控制器中

    我将 Ninject 与 ASP NET MVC 4 一起使用 我正在使用存储库 并希望进行构造函数注入以将存储库传递给其中一个控制器 这是实现 StatTracker 接口的上下文对象 EntityFramework public cla
  • Fluent NHibernate 日期时间 UTC

    我想创建一个流畅的 nhibernate 映射来通过以下方式映射 DateTime 字段 保存时 保存 UTC 值 读取时 调整为本地时区值 实现此映射的最佳方法是什么 就我个人而言 我会将日期存储在 UTC 格式的对象中 然后在读 写时在
  • 如何在 GCC 5 中处理双 ABI?

    我尝试了解如何克服 GCC 5 中引入的双重 ABI 的问题 但是 我没能做到 这是一个重现错误的非常简单的示例 我使用的GCC版本是5 2 如您所见 我的主要函数 在 main cpp 文件中 非常简单 main cpp include
  • boost::program_options:带有固定和可变标记的参数?

    是否可以在 boost program options 中使用此类参数 program p1 123 p2 234 p3 345 p12 678 即 是否可以使用第一个标记指定参数名称 例如 p 后跟一个数字 是动态的吗 我想避免这种情况
  • Azure函数版本2.0-应用程序blobTrigger不工作

    我有一个工作功能应用程序 它有一个 blob 输入和一个事件中心输出 在测试版中工作 随着最新的更改 我的功能不再起作用 我尝试根据发行说明更新 host json 文件 但它没有引用 blob 触发器 version 2 0 extens
  • 如何使用 std::array 模拟 C 数组初始化“int arr[] = { e1, e2, e3, ... }”行为?

    注意 这个问题是关于不必指定元素数量并且仍然允许直接初始化嵌套类型 这个问题 https stackoverflow com questions 6111565 now that we have stdarray what uses are

随机推荐

  • 使用 GTM 在一个容器中实施两个 Analytics 属性

    我想在两个包含相同网站 cms 代码但内容语言不同的域上实施 Google 跟踪代码管理器 因此 我想使用一个容器 一个 GTM 代码 其中包含两个标签 一个标签包含domainA com 的UA 代码段 另一个标签包含domainB co
  • 需要 Postgres 触发器和函数方面的帮助

    我有一个查找表 其中包含一列来源 来自通过我创建的 Web 服务 API 捕获的各种硬编码活动 以及应与其关联的各个品牌 这样我就可以为品牌为空的记录赋予品牌 以便可以通过营销自动化工具使用特定模板来欢迎它们 我最终会弃用这个 API 并用
  • 学说 2 - 查询生成器条件查询... If 语句?

    我的查询是 doctirne 2 我在用户中有一个状态字段 私人或 民众 我希望能够运行此查询并显示所有评论 其中 仅当 userid 当前登录时 状态 公共和私有 用户 ID 我知道 loggerUserVarID q this gt e
  • 如何在 Azure ML 服务中注册本地训练的机器学习模型?

    我正在尝试Azure 机器学习服务 https azure microsoft com en us services machine learning service 用于机器学习部署 我已经在计算 VM 上训练了一个模型并将其保存为 pi
  • c++ - 如何使用裸新初始化智能点?

    我正在尝试学习新的 C 标准 但在使用智能指针时我遇到了不足 这是我正在编写的一个不想运行的程序的代码 include
  • Julia 并行编程 - 使现有功能可供所有工作人员使用

    我面临以下问题 我有一个函数叫做火车模型在单个线程上运行很长时间 当它完成计算时 它返回一个函数作为输出参数 我们称之为f 当我询问这个 的类型时f 朱莉娅返回 具有 1 种方法的通用函数 我不确定最后一条信息对阅读本文的人是否有用 现在在
  • Excel biff5 到 biff8 转换

    我的系统使用 Apache POI 来管理一些 xls 文件 现在我有近 300 个 xls 文件 但它们似乎是旧格式 所以我得到了这个异常 提供的电子表格似乎是 Excel 5 0 7 0 BIFF5 格式 POI 仅支持 BIFF8 格
  • 遇到错误:java.lang.NoClassDefFoundError:com/google/common/collect/ImmutableList$Builder

    我是使用 EclipseIDE 和 TestNG 来使用 Selenium WebDriver 的新手 我目前正在 Eclipse 中通过 TestNG 运行此示例代码 import org openqa selenium By impor
  • 如何将 jQuery.serialize() 数据转换为 JSON 对象?

    当表单包含多个输入数组字段时 是否有更好的解决方案来转换已通过 jQuery 函数 serialize 序列化的表单数据 我希望能够将表单数据转换为 JSON 对象 以重新创建一些其他信息表 那么告诉我一个更好的方法来将序列化字符串转换为
  • .Net 中的钥匙锁

    我有一个 Azure 服务总线队列 我正在其中接收 1 到 10 条具有相同 密钥 的消息 其中一条消息需要通过长时间运行的操作来处理 完成后 数据库将被更新 其他消息将对其进行检查 但是 与此同时 其他消息将重新排队 以便进程不会丢失 但
  • 图像中的第四个通道是什么?

    使用随机生成图像时该列意味着什么np random randint img np random randint 255 size 4 4 3 dtype uint8 这将创建一个 4 x 4 像素 3 列的矩阵 img np random
  • 在 Clojure 中获取函数的参数类型提示

    我正在寻找提取函数参数的类型提示信息 但我似乎找不到访问该信息的方法 例如 假设我有以下功能 defn Double do something String a String b 5 0 拉取标签很简单 tag meta do someth
  • 这些“未定义引用 __glut*WithExit”OpenGL 链接器错误的含义是什么? [复制]

    这个问题在这里已经有答案了 原问题 警告 路过GLfloat for converting 2 of空白 glutSolidSphere GLdouble GLint 闪烁 警告 路过GLfloat for converting 3 of空
  • Swift 中多维数组的语法是什么?

    CO 粉丝 在你下结论之前 它是一个重复的 有 2 种不同风格的数组 看来我问的是不太受欢迎的一种 到目前为止 我只看到了锯齿状数组的语法 例如 Int 但我找不到任何有关平面多维数组的信息 那么类型的语法是什么 比如二维数组Ints 以及
  • 如何使用 Javascript/underscorejs 找到包含对象的数组的交集?

    我不知道如何找到这组数组的交集 name product1 light 1 name product2 light 2 name product5 light 5 name product4 light 4 name product2 li
  • 如何将数据数组导入到 Hive 表中的单独行中?

    我正在尝试将以下格式的数据导入配置单元表 identifier id 1 dataA dataA 1 identifier id 2 dataA dataA 2 我有多个这样的文件 我希望每个 在表中形成一行 这是我尝试过的 CREATE
  • 图形解析错误

    我尝试使用 python 和 igraph 库创建 graphml 文件 我可以构建 igraph 的图形对象并将其写入文件 g write graphml mygraph graphml 一切似乎都很成功 但是当我尝试使用以下命令将文件读
  • 在java中解析XML属性

    我有一个与此类似的xml
  • 为什么GD在imagedestroy()时不释放内存?

    我需要一个 PHP CLI 脚本来通过 GD 函数执行各种图像转换 图像很大 所以我需要压缩尽可能多的内存 然而 当被要求时 imagedestroy 似乎不会释放内存 考虑以下演示脚本 test php usr bin php5
  • C#中如何使用“using”捕获异常

    鉴于此代码 using var conn new SqlConnection conn Open using var cmd conn CreateCommand cmd CommandText using var reader cmd E