【问题标题】:Resharper and the C# Catch ClauseResharper 和 C# Catch 子句
【发布时间】:2010-10-14 15:07:47
【问题描述】:

我是 Resharper 的新手,我试图理解为什么它似乎建议:
catch (Exception) { }
for
catch { }

catch { }
for
catch (Exception) { }

我很困惑。

【问题讨论】:

    标签: c# .net resharper try-catch


    【解决方案1】:

    基本上,它为您提供了一种在两种选择之间切换的方式,而不是具体推荐哪个更好。

    您可以更改 ReSharper / 选项 / 代码检查 / 检查严重性下提供的内容 - 找到相关选项并更改无、提示、建议、警告或错误之间的优先级。

    【讨论】:

      【解决方案2】:

      Resharper 确实有另一条信息更像是建议:它建议您不要使用 Exception 类。

      【讨论】:

      • 为什么?这正是我想要的功能。
      • @BunnyStrider - 你想赶上NullReferenceException
      • @DanielEarwicker 不,我必须调用有时会抛出异常(不幸的是,异常类型)的代码,如果是这样,我不在乎。所以在这个特定的例子中,我理所当然地想要捕获异常并且什么都不做。
      • 所以你调用的代码太可怕了。它可能会抛出您想要捕获的异常,或者它可能有一个错误,它试图在空引用上调用方法。实际上,Resharper 建议您不要调用该代码!这是个好建议。
      【解决方案3】:

      catch { }

      catch { throw; }

      【讨论】:

        【解决方案4】:

        它只是为您提供了可供考虑的替代方案,这可能会激发您对改进代码的一些见解。如果没有意义,请忽略该建议。

        【讨论】:

          【解决方案5】:

          因为有时在整理 catch 块时,您会在 catch(Exception ex)catch(Exception)catch 之间移动,反之亦然,这取决于您是尝试纯粹过滤、记录/包装还是吞下异常。 (见me requesting the same feature for CodeRush without being aware it even existed in R#

          IIRC there may also be a difference between the two from the point of view of the code they generate/things they filter and miss

          编辑:该链接之前被标记为“Empty catch is bad”,因此非常正确的反对票!

          【讨论】:

          • 虽然这可能是真的,但根据 OP,Resharper 建议在使用 catch{Exception} 时使用 catch{}
          • catch() { ... } 不是“空捕获”,它只是“catch(Exception) { ...} ”的替代语法,大括号内的代码不必是空的......您可以(应该)将代码放在大括号内。如果不是,那么它是邪恶的,因为你正在吞咽通用异常......
          • 无论你在大括号中放什么代码,实际上都是非常邪恶的。
          • 如果它位于线程的绝对顶部堆栈帧,则不会。例如,您是否认为在整个过程失败之前记录异常没有用? (没有什么可以说...的一部分不是“扔”)
          • Mea culpa - 实际上并没有遵循我发布的链接。在我看来,这篇文章解释了 catch{...} 和 catch (Exception) {...} 之间的区别。无法找到像我现在梦寐以求的帖子那样的远程内容 - IIRC 在这个领域从 .NET 1.1 与 2 发生了一些变化(SEH 例外?)。
          猜你喜欢
          • 2011-07-19
          • 2011-09-17
          • 2016-11-22
          • 2010-11-04
          • 2014-12-22
          • 1970-01-01
          • 2016-05-08
          • 2016-11-25
          相关资源
          最近更新 更多