Roy*_*mir 2 c# asp.net .net-4.0
众所周知,Server.Transfer在执行时会抛出ThreadAbortException.
此外,ThreadAbortException继承Exception:

那么为什么异常不会进入catch块:
try
{
Server.Transfer("NoPremissionSell.aspx");
}
catch (Exception e)
{ }
Run Code Online (Sandbox Code Playgroud)
它会在:
try
{
Server.Transfer("NoPremissionSell.aspx");
}
catch (ThreadAbortException e)
{ }
Run Code Online (Sandbox Code Playgroud)
这适用于两种情况.我不知道它为什么以前没用.请忽略.
对不起误导.
.NET运行时(命令语言基础结构,CLI,处理程序集执行的基础)对许多异常类型的处理方式不同.
例如.StackOverflowException不能被捕获在所有的.NET代码.
其原因取决于例外情况.在这种情况下,StackOverflowException因为CLI无法保证进程状态的正确性.
在ThreadAbortException特殊处理的情况下,因为虽然它可以被捕获但必须重新抛出(自动),因此线程将结束.
| 归档时间: |
|
| 查看次数: |
306 次 |
| 最近记录: |