S3877 — Exceptions should not be thrown from unexpected methods

Language
C#
Type
Code smell
Severity
Blocker
Tags
pitfall

Why is this an issue?

The rule is reporting when an exception is thrown from certain methods and constructors. These methods are expected to behave in a specific way and throwing an exception from them can lead to unexpected behavior and break the calling code.


public override string ToString()
{
  if (string.IsNullOrEmpty(Name))
  {
    throw new ArgumentException(nameof(Name));  // Noncompliant
  }
  //...
}

An issue is raised when an exception is thrown from any of the following:

Exceptions

Certain exceptions will be ignored in specific contexts, thus not raising the issue:

Resources

Documentation

↑ Back to top