As far as possible, don’t use exceptions for control flow or unexceptional circumstances.
But to answer your question directly (assuming all the exception-types are the same):
Func<double>[] calcs = { calc1, calc2, calc3 };
foreach(var calc in calcs)
{
try { return calc(); }
catch (CalcException){ }
}
throw new NoCalcsWorkedException();