7

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

try
{
    //some Code
}
catch
{
    0.ToString();
}

0.ToString()为了什么?大部分代码都是在压力下编写的,所以我可以想到两种可能性:

  • 它是一个占位符(如//TODO),可以对其进行搜索以了解您必须在哪里修复一些东西。
  • 这是为了避免在编译空 catch 子句时出现警告。

那还有其他用例或意义吗?这是好的/坏的编码风格还是实践?由于这条指令什么都不做,它会对性能产生一些小的影响还是编译器会直接删除它?哪些是更好的方法来做类似的事情

4

2 回答 2

2

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

0.ToString();

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

与之分开的是空catch块,这通常不是一个好主意。瑞安盖茨对此给出了一个很好的答案,所以我不会在这一点上展开。但具有讽刺意味的是,如果有一个适当的 catch 块,就会有一行代码可以放置断点。

于 2013-02-13T01:50:14.817 回答
1

不,这样做没有其他用例或合理的理由。这是一种糟糕的编码习惯。您的代码不应捕获任何它无法处理的异常。

最好的前进道路是删除它。当抛出异常时,您需要了解该用例。只有这样,您才能添加适当的检查和/或特定的异常处理代码。

有问题的代码是吞下异常的示例,这对您的健康有害

于 2013-02-12T14:51:06.727 回答