Implement exception handling

Your code catches an IOException when a file cannot be accessed. You want to give more information to the caller of your code. What do you do?

Throw a new exception with extra information that has the IOException as InnerException.
Change the message of the exception and rethrow the exception.
Throw a new exception with more detailed info.
Use throw to rethrow the exception and save the call stack.