Because parameter names could be changed during refactoring, they should not be spelled out literally in strings. Instead, use
NameOf(), and the string that’s output will always be correct.
This rule raises an issue when any string in the Throw statement is an exact match for the name of one of the method parameters.
Public Sub DoSomething(param As Integer, secondParam As String)
If (param < 0)
Throw New Exception("param") ' Noncompliant
End If
If secondParam is Nothing
Throw New Exception("secondParam should be valid") ' Noncompliant
End If
End Sub
Public Sub DoSomething(param As Integer, secondParam As String)
If (param < 0)
Throw New Exception(NameOf(param))
End If
If secondParam is Nothing
Throw New Exception($"{NameOf(secondParam)} should be valid")
End If
End Sub
Throw statement string, the rule will raise an issue only if the
parameter name is at least 5 characters long. This is to avoid false positives.