我正在学习ASP.NET,正在查看QueryStrings.
我正在看的其中一个示例将按钮挂钩到重定向调用:
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);
}
}
Run Code Online (Sandbox Code Playgroud)
为什么会在这里抛出ThreadAbortException?这是正常的吗?我应该为此做点什么吗?例外通常不是一件好事,所以当我看到这一点时我感到震惊.
M4N*_*M4N 14
这是设计的.此知识库文章描述了行为(也适用于Request.End()和Server.Transfer()方法).
因为Response.Redirect()存在过载:
Response.Redirect(String url, bool endResponse)
Run Code Online (Sandbox Code Playgroud)
如果传递endResponse = false,则不会抛出异常(但运行时将继续处理当前请求).
如果endResponse = true(或者如果使用不带bool参数的重载),则抛出异常并立即终止当前请求.