Skip to main content

Throw Exceptions Contract

  • 2 minutes to read

Purpose

This Code Provider adds the guard precondition to method parameter(s) or a variable assignment. The precondition ensures the passed or assigned values are not empty and throws the ArgumentException (or ArgumentNullException) in case they are.

Availability

Available in the following cases.

  • When the caret is at the beginning of a method body. In this case, the contract will test all method parameters and strings.
  • When the caret is on a method’s parameter name. In this case, the contract will test only the selected parameter.
  • When the caret is on a variable assignment.

Note

This Code Provider may be unavailable for variables of a non-nullable type, for instance, Integer.

Usage

  1. Place the caret at the beginning of a method body.

    Note

    The blinking cursor shows the caret’s position at which the Code Provider is available.

    public bool AddRecord(string name, object data) {
    //...
        return true;
    }
    
  2. Press the Ctrl + . or Ctrl + ~ shortcut to invoke the Code Actions menu.
  3. Select Add Contract | Throw Exceptions Contract from the menu.

After execution, the Code Provider adds the guard conditional against all the method parameters.

public bool AddRecord(string name, object data) {
    if (string.IsNullOrEmpty(name))
        throw new ArgumentException($"{nameof(name)} is null or empty.", nameof(name));
    if (data == null)
        throw new ArgumentNullException(nameof(data), $"{nameof(data)} is null.");

    //...
    return true;
}

You can ask CodeRush to check arrays and collections length in code contracts. Refer to the Code Actions Settings topic for more information.

See Also