AvoidUsingEmptyCatchBlock

严重性级别:警告

默认状态:始终启用

Description

该规则用于检测空 catch 方块。 空的捕获块存在问题,因为它们无声地抑制异常,无需错误处理、日志记录或恢复操作。 这会掩盖漏洞,使排查变得困难。 异常处理时应始终通过 log Write-Error 错误、 throw 传播错误或在捕获块内提供适当的恢复逻辑来明确处理异常。

Example

非符合性

try
{
    1/0
}
catch [DivideByZeroException]
{
}

合规的

try
{
    1/0
}
catch [DivideByZeroException]
{
    Write-Error 'DivideByZeroException'
}

try
{
    1/0
}
catch [DivideByZeroException]
{
    throw 'DivideByZeroException'
}

配置规则

这个规则始终是启用的,不能配置。 请采用以下方法之一以避免使用此规则:

  • 创建一个自定义规则配置文件,只包含你想要的规则,或者排除你不想要的规则。
  • 在代码中添加相应的规则抑制属性,以抑制特定代码块的规则。 更多信息请参见使用 PSScriptAnalyzer 中的“抑制规则”部分。