Edit

Share via


CA1511: Use ArgumentException throw helper

Property Value
Rule ID CA1511
Title Use ArgumentException throw helper
Category Maintainability
Fix is breaking or non-breaking Non-Breaking
Enabled by default in .NET 10 As suggestion

Cause

Code checks whether an argument is null or an empty string and then conditionally throws an ArgumentException.

Rule description

Argument checks have a substantial impact on code size and often dominate the code for small functions and property setters. These checks prevent inlining and cause substantial instruction-cache pollution. Throw-helper methods such as ArgumentException.ThrowIfNullOrEmpty(String, String) are simpler and more efficient than if blocks that construct a new exception instance.

Example

The following code snippet shows a violation of CA1511:

void M(string arg)
{
    if (string.IsNullOrEmpty(arg))
        throw new ArgumentException("", "arg");
}

The following code snippet shows the fix:

void M(string arg)
{
    ArgumentException.ThrowIfNullOrEmpty(arg);
}

How to fix violations

Replace the if block that throws the exception with a call to ArgumentException.ThrowIfNullOrEmpty(String, String). Or, in Visual Studio, use the lightbulb menu to fix your code automatically.

When to suppress warnings

It's safe to suppress a violation of this rule if you're not concerned about the maintainability of your code. It is also fine to suppress violations that are identified to be false positives.

Suppress a warning

If you just want to suppress a single violation, add preprocessor directives to your source file to disable and then re-enable the rule.

#pragma warning disable CA1511
// The code that's violating the rule is on this line.
#pragma warning restore CA1511

To disable the rule for a file, folder, or project, set its severity to none in the configuration file.

[*.{cs,vb}]
dotnet_diagnostic.CA1511.severity = none

For more information, see How to suppress code analysis warnings.