Response.Redirect completes the current execution and thus redirects immediately by throwing this exception so that it is not processed. This is intentional and by design. You should not catch yourself in most cases - this defeats the goal. If you want to complete code execution before redirecting, you can use overloading:
Response.Redirect(somewhere, false);
Which will NOT throw an exception. This may be ineffective if you do not need to do anything else before redirecting.
Please note that this is usually a logical thread controlled by an anti-pattern using exceptions and catching exceptions ... However, it makes sense to do this for this particular method, since redirection usually does not require any additional logic to execute - it just answers 302 and the new address for the transition.
source share