C#:找到所有空的catch块
我正在审查一些代码。
我注意到一些空的挡块。 不是一个好主意,因为有些东西不起作用,你不明白为什么。
有没有一种简单的方法可以在解决方案中找到所有空的try catch块?
使用全局查找对话框,打开正则表达式,然后搜索:
catch:b*\([^)]*\):b*\{:b*\}
FxCop会发现它们以及许多其他潜在问题。
你有ReSharper吗? 这应该是代码中发现的问题。
进一步扩展了上面的三个解决方案以包括子句,其中大括号与catch不在同一行,catch子句只包含单行引号:
catch:b*(\([^)]*\))*:b*[ \n\r\t]*\{:b*([ \n\r\t.]|(\/*[^]*\/)|(//.*$))*\}
感谢Stefan对Regex的建议。 我发现建议的正则表达式没有找到未指定exception的catch块,即:
catch { }
我稍微调整了Stefan,以使exception括号可选:
catch:b*(\([^)]*\))*:b*\{:b*\}
这是一个正则表达式,它也可以找到仅包含注释的catch块:
catch:b*\([^)]*\)[:b\n]*\{([:b\n]|(\/\*[^*]*\*\/)|(//[^\n]*))*\}
按Ctrl + Shift + F.展开查找选项。 选中使用正则表达式粘贴此正则表达式。
catch\s*(\(\s*Exception(\s*\w+)?\))?\s*\{\s*\}