Show non-KeyboardInterrupt errors when sampling

If the function returns in the finally block, any errors that happen in
the try block are masked. Returning the function outside of the finally
retains the same KeyboardInterrupt behavior but won't mask any other
errors that occur.