你的这个问题挺有意思的,这段代码之所以执行完了第一个finally之后就返回了,是因为你在第一个try中故意写的那个错误,System.Threading.Thread.CurrentThread.Abort(); 导致这个线程退出,所以执行完finally之后就返回了。你把这个换成一个除了的错误试试,你就会发现程序是可以执行到第二个try catch里面的。