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.