C# 嵌套 Try Catch 语句或方法?

2024-02-26

简单的最佳实践问题。

应该嵌套 try catch 语句还是只使用方法。

例如,如果您有一个打开文件的方法确实有效并关闭该文件,那么您将在 try catch 之外进行打开和关闭,或者更确切地说,在 finally 块中进行关闭。

现在,如果您的 open 方法失败,该方法会断言正确吗?那么您应该将其包装在 try catch 块中,还是应该从另一个方法调用它,而该方法又作为 try catch 块?


在打开文件的方法的上下文中,我将使用 using 语句而不是 try catch。 using 语句确保在发生异常时调用 Dispose。

using (FileStream fs = new FileStream(file, FileMode.Open))
{
    //do stuff
}

做同样的事情:

FileStream fs;
try
{
     fs = new FileStream(file, FileMode.Open);
     //do Stuff
 }
 finally
 {
        if(fs!=null)
           fs.Dispose();
 }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C# 嵌套 Try Catch 语句或方法? 的相关文章

  • Qt - QProcess 不工作

    我尝试启动 Internet Explorer 所以我使用下面的代码 QProcess process new QProcess this QString temp C Program Files Internet Explorer iex
  • 为什么这个 Web api 控制器不并发?

    我有一个 Web API 控制器 里面有以下方法 public string Tester Thread Sleep 2000 return OK 当我调用它 10 次 使用 Fiddler 时 我预计所有 10 次调用都会在大约 2 秒后
  • 在 HKCR 中创建新密钥有效,但不起作用

    我有以下代码 它返回 成功 但使用两种不同的工具使用搜索字符串 3BDAAC43 E734 11D5 93AF 00105A990292 搜索注册表不会产生任何结果 RegistryKey RK Registry ClassesRoot C
  • Rx.NET 中是否有一个Subject 实现,其功能类似于BehaviourSubject,但仅在值发生更改时才发出?

    有没有Subject https learn microsoft com en us previous versions dotnet reactive extensions hh229699 v vs 103 Rx NET 中的实现在功能
  • 循环遍历 C 结构中的元素以提取单个元素的值和数据类型

    我有一个要求 我有一个 C 语言的大结构 由大约 30 多个不同数据类型的不同元素组成 typedef struct type1 element1 type2 element2 type3 element3 type2 element4 1
  • 传递 constexpr 对象

    我决定给予新的C 14的定义constexpr旋转并充分利用它 我决定编写一个小的编译时字符串解析器 然而 我正在努力保持我的对象constexpr将其传递给函数时 考虑以下代码 include
  • 如何将 SOLID 原则应用到现有项目中

    我对这个问题的主观性表示歉意 但我有点卡住了 我希望之前处理过这个问题的人能够提供一些指导和建议 我有 现在已经成为 一个用 C 2 0 编写的非常大的 RESTful API 项目 并且我的一些类已经变得巨大 我的主要 API 类就是一个
  • 语音识别编程问题入门

    所以 你们可能都看过 钢铁侠 其中托尼与一个名为贾维斯的人工智能系统进行交互 演示剪辑here http www youtube com watch v Go8zsh1Ev6Y 抱歉 这是广告 我非常熟悉 C C 和 Visual Basi
  • 如何使用 Regex.Replace 从字符串中删除数字?

    我需要使用Regex Replace从字符串中删除所有数字和符号 输入示例 123 abcd33输出示例 abcd 请尝试以下操作 var output Regex Replace input d string Empty The d标识符
  • 不同 C++ 文件中的相同类名

    如果两个 C 文件具有相同名称的类的不同定义 那么当它们被编译和链接时 即使没有警告也会抛出一些东西 例如 a cc class Student public std string foo return A void foo a Stude
  • 什么是空终止字符串?

    它与什么不同标准 字符串 http www cplusplus com reference string string 字符串 实际上只是一个数组chars 空终止字符串是指其中包含空字符的字符串 0 标记字符串的结尾 不一定是数组的结尾
  • 在 VS 中运行时如何查看 C# 控制台程序的输出?

    我刚刚编写了一个名为 helloworld 的聪明程序 它是一个 C NET 4 5 控制台应用程序 在扭曲的嵌套逻辑迷宫深处 使用了 Console WriteLine 当我在命令行运行它时 它会运行并且我会看到输出 我可以执行其他命令并
  • 如何使用 x64 运行 cl?

    我遇到了和这里同样的问题致命错误 C1034 windows h 未设置包含路径 https stackoverflow com questions 931652 fatal error c1034 windows h no include
  • 在 .NET MAUI 中实现 TouchTracking

    我一直致力于将我们的应用程序从 Xamarin Forms 迁移到 NET MAUI 我们的应用程序几乎没有绘图功能 用户可以用手指进行绘图 我们用了TouchTrackingXamarin Forms 中的 nuget 包 但与 NET
  • 将二变量 std::function 转换为单变量 std::function

    我有一个函数 它获取两个值 x 和 y 并返回结果 std function lt double double double gt mult double x double y return x y 现在我想得到一个常量 y 的单变量函数
  • 将函数参数类型提取为参数包

    这是一个后续问题 解包 元组以调用匹配的函数指针 https stackoverflow com questions 7858817 unpacking a tuple to call a matching function pointer
  • Oauth2中如何同时撤销RefreshToken和使AccessToken失效

    我正在使用 Owin Oauth2 授权和资源服务器相同 开发单页面应用程序 AngularJS Net MVC Json Rest API 的身份验证流程 我选择了 Bearer Token 路由而不是传统的 cookie session
  • 将 Lambda 表达式树与 IEnumerable 结合使用

    我一直在尝试了解有关使用 Lamba 表达式树的更多信息 因此我创建了一个简单的示例 这是代码 如果作为 C 程序粘贴到 LINQPad 中 它可以工作 void Main IEnumerable
  • EntityFramework 6.0.0.0 读取数据,但不插入

    我创建了一个基于服务的数据库 folderName gt Add New Item gt Data gt Service based Database文件到 WPF 应用程序中 然后我用过Database First方法并创建了Person
  • MySqlConnectionStringBuilder - 使用证书连接

    我正在尝试连接到 Google Cloud Sql 这是一个 MySql 解决方案 我能够使用 MySql Workbench 进行连接 我如何使用 C 连接MySqlConnectionStringBuilder 我找不到提供这三个证书的

随机推荐

  • jupyterlab中初始化SparkContext时出错

    嗨 我正在尝试学习如何使用 pyspark 但是当我运行第一行时 import pyspark sc pyspark SparkContext local 我收到此错误 Py4JJavaError An error occurred whi
  • 如何在没有 SDK 或自定义应用程序 ID 的情况下创建 Facebook 分享按钮?

    我正在看Facebook 分享按钮的最新更新 https developers facebook com docs sharing reference share dialog如果不包含 Facebook javascript SDK 或者
  • 为什么pip找不到pysvn?

    我正在开发一个用 Python 2 编写的项目 并将其升级到 Python 3 到目前为止 我只是发现了一些很容易修复的小语法错误 我所做的就是在 Python 3 中创建一个新项目 确保其正常工作 并将旧项目中的代码块复制到新项目中 现在
  • 为什么 TypeScript 接口不支持索引签名,而类型别名却支持? [复制]

    这个问题在这里已经有答案了 我有一个带有字符串索引签名的类型 declare var result key string number 将接口分配给该类型失败 interface IData a number b number declar
  • 使用 ?attr/selectableItemBackground 作为背景时如何修改波纹颜色?

    我见过一些 SO 问题 他们给出了一些可能的方法来实现我想要的 例如 Use colorControlHighlightstyles xml 中的属性 这是我的 styles v21 xml 还有我的小部件
  • 两个不相等的浮点数相减是否可以得到0?

    在下面的例子中是否可以除以 0 或无穷大 public double calculation double a double b if a b return 0 else return 2 a b 当然 在正常情况下不会 但如果a and
  • 无法在 Ubuntu 中使用 setup.py 中的 Github Actions 安装 Tensorflow 2.2.0rc0

    当我尝试安装时tensorflow gt 2 2 0rc0 from setup py跑步python setup py install从 Github Actions 工作流程中 输出向我发送以下内容 Searching for tens
  • MongoError:不允许用户执行操作

    我使用 MongoDB Atlas 作为我的数据库 我使用 angular4 和环回作为 api 我的应用程序可以正常连接到我的数据库 但是 当我尝试获取数据时 出现此错误 我已将我的 dbname 替换为 dbname MongoErro
  • R/LaTeX 表创建包的建议

    我一直在使用xtable很长一段时间以来 并期待着用 R 编写我的第一个包 所以我认为 如果我有一些值得实施的 酷 想法 那么很有可能有人在我之前到达那里 我对专门用于 LaTeX 表创建的函数 包感兴趣 当然是通过 R 我撞上了quant
  • 如何复制 Google 工作表并保留其项目触发器和脚本?

    我目前有一个 Google 表格 用作主模板 也就是说 我会为每个请求制作该模板的副本 我想向我的主模板添加一个 Google 应用程序脚本 当工作表完成后 它会在编辑时发布到我的服务器 该脚本将被复制并为此模板的每个副本运行 我已经尝试从
  • 是否应该确保 IDisposable.Dispose() 可以安全地多次调用?

    应实施IDisposable make Dispose 多次拨打安全吗 或者相反 大多数 NET Framework 类采用什么方法 具体来说 打电话安全吗 System Data Linq DataContext Dispose 多次 我
  • 建立 iTunes 商店的联属链接而不进行重定向?

    苹果公司在 从 iPhone 应用程序启动 App Store http developer apple com library ios qa qa1629 index html 如何建立一个到应用商店的联属链接并在后台处理重定向 这样就不
  • LLDB GUI 的文档

    我最近一直在研究 LLDB 的 GUI 功能 有关此功能的 stackoverflow 链接有描述here https stackoverflow com questions 19820247 is there a tui mode for
  • MongoDB 3.2 身份验证失败

    我使用以下命令集创建一个用户 这应该在两者中创建用户admin数据库以及我的目标数据库 c2d mongo 127 0 0 1 27017 MongoDB shell version 3 2 6 29 g5c19788 connecting
  • 使用epplus创建.xlsm文件

    我正在尝试让网站导出 xlsm 文件 但似乎找不到任何有帮助的内容 这是我用来测试构建 xlsx 文件 有效 的一个简单示例 using OfficeOpenXml div Change file extension to xlsm to
  • 如何在 PHP 中解析日期字符串?

    日期字符串为Apr 30 2010 我怎样才能将字符串解析为2010 04 30使用 PHP 使用 DateTime API 需要 PHP 5 3 dateTime DateTime createFromFormat F d Y Apr 3
  • 表达请求 .query.xyz 作为字符串 |细绳[]

    我正在尝试为我的变量分配一个类型 该变量从express 请求查询中获取其值 req query 的类型为 QueryString ParsedQs 例如 req query accountId 的类型为 string QueryStrin
  • 是否有一个玩笑配置会导致 console.warn 测试失败?

    如何配置笑话测试以因警告而失败 console warn stuff fail test 您可以使用这个简单的覆盖 let error console error console error function message error a
  • R 的 xtsum 命令?

    我们正在处理面板数据 Stata中有一个命令 xtsum 这给出了数据集中变量的内部方差和方差之间 R 是否有类似的命令可以产生干净的输出 我用了一个小函数来做到这一点 函数 XTSUM 接受三个输入 数据 数据集varname xtsum
  • C# 嵌套 Try Catch 语句或方法?

    简单的最佳实践问题 应该嵌套 try catch 语句还是只使用方法 例如 如果您有一个打开文件的方法确实有效并关闭该文件 那么您将在 try catch 之外进行打开和关闭 或者更确切地说 在 finally 块中进行关闭 现在 如果您的