CodeQL 文档

不良的错误处理:空的 catch 块

ID: cs/empty-catch-block
Kind: problem
Security severity: 
Severity: recommendation
Precision: very-high
Tags:
   - reliability
   - readability
   - exceptions
   - external/cwe/cwe-390
   - external/cwe/cwe-391
Query suites:
   - csharp-security-and-quality.qls

点击查看 CodeQL 代码库中的查询

在某些语言中,空的 catch 块在某些罕见情况下可能是可以接受的,例如,当保证不会引发已检查的异常时。C# 没有已检查的异常,因此任何空的 catch 块通常都是错误或不良做法的实例。

忽略应该以某种方式处理的异常几乎总是一个非常糟糕的主意。如果忽略异常,攻击者可能会在程序中引入意外行为。

建议

确保正确处理所有异常。

示例

在这个伪代码示例中,如果程序无法降低权限,它将继续以相同的权限运行。

class EmptyCatchBlock
{
    public static void Main(string[] args)
    {
        // ...
        try
        {
            SecurityManager.dropPrivileges();
        }
        catch (PrivilegeDropFailedException e)
        {

        }
        // ...
    }
}

参考

  • ©GitHub 公司
  • 条款
  • 隐私