所以我对它的 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 不是,因为文件系统是可以异步修改的共享资源。处理实际打开文件的错误或异常结果是避免竞争条件的唯一方法。
见
- http://blogs.msdn.com/b/jaredpar/archive/2009/12/10/the-file-system-is-unpredictable.aspx
- http://blogs.msdn.com/b/ericlippert/archive/2008/09/10/vexing-exceptions.aspx
- how can you easily check if access is denied for a file in .NET?
这些示例都使用文件,但这里有一个共享资源的通用原则。
关于c# - trycatch 是如何伤害内存/CPU 的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7698526/