Why do I get a thrown exception when I run Response.Redirect()?

.net, asp.net, c#

Solution

This is by design. This KB article describes the behavior (also for the `Request.End()` and `Server.Transfer()` methods).

For `Response.Redirect()` there exists an overload:

Response.Redirect(String url, bool endResponse)

If you pass endResponse=false, then the exception is not thrown (but the runtime will continue processing the current request).

If endResponse=true (or if you use the overload without the bool argument), the exception is thrown and the current request will immediately be terminated.

Problem

I am learning ASP.NET and was looking at QueryStrings. One of the examples I was looking at hooks a button up to a redirect call: ``` protected void btnSubmit_Click(object sender, EventArgs e) { try { //throws ThreadAbortException: "Thread was being aborted" Response.Redirect("Form2.aspx"); } catch (Exception Ex) { System.Diagnostics.Debug.WriteLine(Ex.Message); } } ``` Why does it throw a ThreadAbortException here? Is that normal? Should I do something about this? Exceptions are generally not a good thing, so I was alarmed when I saw this.

Original source

Related problems