下面的代码在调试和发布模式下生成不同的异常堆栈跟踪:
static class ET
{
public static void E1()
{
throw new Exception("E1");
}
public static void E2()
{
try
{
E1();
}
catch (Exception e)
{
throw;
}
}
public static void Entry()
{
try
{
E2();
}
catch (Exception e)
{
Console.WriteLine(e.StackTrace);
}
}
}
Run Code Online (Sandbox Code Playgroud)
调试模式的结果:
在ET:E1()中的D:\ myStudio\CSharp\CSharp4.0\MyCSharp\ExceptionHandling.cs:第47行
在ET:E2()中的D:\ myStudio\CSharp\CSharp4.0\MyCSharp\ExceptionHandling.cs:第58行
at ET.Entry()在D:\ myStudio\CSharp\CSharp4.0\MyCSharp\ExceptionHandling.cs:第68行
释放模式中的结果:
在ET:E2()中的D:\ myStudio\CSharp\CSharp4.0\MyCSharp\ExceptionHandling.cs:第55行
at ET.Entry()在D:\ myStudio\CSharp\CSharp4.0\MyCSharp\ExceptionHandling.cs:第68行
请注意,缺少发布模式中结果的第一行.如何在发布模式下返回违规行.