在我的工作中,我必须维护一些C#项目。原来的开发商已经不在了。最近,我注意到一些奇怪的代码,主要出现在这样的情况下:

try
{
    //some Code
}
catch
{
    0.ToString();
}
0.ToString()是做什么用的?大多数代码都是在压力下编写的,因此我可以想到两种可能性:
  • 这是一个占位符(例如//TODO),可以对其进行搜索以了解您必须在哪里修复某些问题。
  • 避免在为空的catch子句进行编译时发出警告。

  • 还有其他用例或意义吗?这是好/不好的编码风格还是实践?由于该指令不执行任何操作,因此会对性能产生小的影响还是编译器将其删除?哪些是做类似的更好的方法

    最佳答案

    就像注释所暗示的那样,代码示例包含了一件奇怪的事和一件坏事。这

    0.ToString();
    

    几乎可以肯定的是,调试器可以在其中放置断点的代码行。这是我见过的用于此目的的陌生行之一。这行可能是在调试 session 后无意中提交的。

    与此分开的是空的catch块,这通常不是一个好主意。瑞恩·盖茨为此提供了一个很好的答案,所以我不会在这一点上做进一步的说明。但是具有讽刺意味的是,如果有一个适当的catch块,就会有一行代码在其上放置一个断点。

    关于c# - 奇怪的异常处理伪指令,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14835035/

    10-13 01:59