c# - trycatch 是如何伤害内存/CPU 的?

标签 c# exception-handling

所以我对它的 c# 方面很感兴趣 - 但我将 c++ 标记为那里存在的概念并且我没有超过“finally”关键字。 所以无论如何 - 是否有关于 try-catch 如何减慢或使用比简单的“if-else”或其他代码更多的内存的在线基准?例如,现在我正在编写代码并使用 Streamwriter,当你将鼠标悬停在它上面时它会显示 7 个可能的异常......所以有人会声称如果我写这样的东西会更快:

//////////////
if(path is not too long)
{ if(file exists)
{ if(nothing else uses the file)
{ if(user is authorized)
}}}
////////////

您有 7 个条件,您可以只使用 try-catch,更不用说这些条件不能简化为单个 if 语句。

10 倍!

最佳答案

try/catch在异常发生时会有轻微的性能开销,但与文件访问相比,这个开销并不值得担心。

更重要的是 try/catch 是正确的,嵌套的 ifs 不是,因为文件系统是可以异步修改的共享资源。处理实际打开文件的错误或异常结果是避免竞争条件的唯一方法。

这些示例都使用文件,但这里有一个共享资源的通用原则。

关于c# - trycatch 是如何伤害内存/CPU 的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7698526/

相关文章:

php - 在多语言(例如英语和法语)应用程序中抛出异常

exception - F#异常处理构造

java - 为什么 java.lang.Throwable 是一个类?

c# - 在运行时以编程方式从 LINQ 查询获取可执行 SQL

c# - C# 编译器不会在每次编译时立即报告所有错误吗?

c# - 如何将自定义窗口窗体置于安装项目窗口顶部?

ruby-on-rails - Ruby on Rails 3.1 - 在数据库中记录异常

c# - 单击 wp8 获取所有文本 block 的属性值

c# - DateTime.Now 相差一毫秒

c++ - 为什么在 C++ 中使用 try 和 catch()?