Why does SortedList implementation use ThrowHelper instead of throwing directly?
<p>Reflector tells me that SortedList uses a ThrowHelper class to throw exceptions instead of throwing them directly, for example:</p>

<pre><code>public TValue this[TKey key]
{
    get
    {
        int index = this.IndexOfKey(key);
        if (index &gt;= 0)
            return this.values[index];
        ThrowHelper.ThrowKeyNotFoundException();
        return default(TValue);
    }
</code></pre>

<p>where ThrowKeyNotFoundException does nothing more than just:</p>

<pre><code>throw new KeyNotFoundException();
</code></pre>

<p>Note how this requires a duff statement "return default(TValue)" which is unreachable. I must conclude that this is a pattern with benefits large enough to justify this.</p>

<p>What are these benefits?</p>
