奇怪的异常处理虚拟指令

Hec*_*tor 7 c# exception-handling

在我的工作中,我必须维护一些C#项目.最初的开发人员不在了.最近我注意到一些奇怪的代码主要出现在这样的情况:

try
{
    //some Code
}
catch
{
    0.ToString();
}
Run Code Online (Sandbox Code Playgroud)

有什么0.ToString()用?大多数代码是在压力下编写的,所以我可以想到两种可能性:

  • 这是一个占位符(如//TODO),可以搜索它,知道你在哪里修复一些东西.
  • 这是为了避免在编译空catch子句时发出警告.

那还有其他用例或意义吗?这是好/坏编码风格还是练习?由于该指令不执行任何操作,它是否会对性能产生一些小的影响,或者编译器会将其删除吗?哪种方式更好

bmm*_*m6o 2

正如评论所暗示的,代码示例包含一件奇怪的事情和一件坏事。这

0.ToString();
Run Code Online (Sandbox Code Playgroud)

几乎可以肯定,调试器可以在一行代码中放置断点。这是我见过的用于此目的的最奇怪的线路之一。这行代码很可能是在调试会话后无意中提交的。

与此分开的是空catch块,这通常不是一个好主意。瑞安·盖茨(Ryan Gates)对此给出了很好的答案,因此我不打算进一步阐述这一点。但讽刺的是,如果有一个适当的 catch 块,就会有一行代码来放置断点。