代码分析:CA2200 再次引发以保留堆栈详细信息
以下代码,如果使用 throw e ,运行代码分析会提示如下警告,如果直接 throw 则不会提示警告
![](https://images2015.cnblogs.com/blog/219123/201607/219123-20160727160919169-268476520.png)
static void Main(string[] args) { try { MemoryStream ms = new MemoryStream(16); ms.Close(); try { ms.ReadByte(); } catch (ObjectDisposedException e) { Console.WriteLine("错误信息: {0},堆栈信息:{1}", e.Message, e.StackTrace); //throw e; 不好的做法 throw; //好的做法 } } catch(Exception ex) { Console.WriteLine(); Console.WriteLine("错误信息: {0},堆栈信息:{1}", ex.Message, ex.StackTrace); } Console.ReadLine(); }
![](https://images2015.cnblogs.com/blog/219123/201607/219123-20160727161334841-759177764.png)
![](https://images2015.cnblogs.com/blog/219123/201607/219123-20160727161753044-1684240943.png)