Is my error handling feasible when dealing items not found in an array?
Your error handling looks correct to me as long as your application is catching PdhSwapRateNotFoundException at some point and logging appropriate warning/error to notify user about this.

A slight cosmetic modification to your code could be like:

{
    if (!SwapExists(shiftedCurve, swapToShift))
        throw new PdhSwapRateNotFoundException(swapToShift);

    var rateToShift = shiftedCurve.Swaps.Single(r =&gt; r.Description() == swapToShift);
    rateToShift.Rate = rateToShift.Rate + 1 / 10000.0;
    return; // you don't actually need this.
}


And you're correct default value of reference type is null.

Edit:
I assume shiftedCurve.Swaps will not be null, otherwise Find will throw an exception. And if you think it could be the case then you may want to update your code to check for shiftedCurve.Swaps == null and handle it appropriately.