Test1ではコールスタックが更新されず、Test2ではコールスタックが初期化されます。
private void Form1_Load(object sender, EventArgs e)
{
try
{
Test1();
}
catch (Exception ex)
{
System.Diagnostics.Debug.WriteLine("-----------Test1");
System.Diagnostics.Debug.WriteLine(ex.StackTrace);
}
try
{
Test2();
}
catch (Exception ex)
{
System.Diagnostics.Debug.WriteLine("-----------Test2");
System.Diagnostics.Debug.WriteLine(ex.StackTrace);
}
}
private void Test1()
{
try
{
ExceptionThrow();
}
catch (Exception e)
{
throw;
}
}
private void Test2()
{
try
{
ExceptionThrow();
}
catch (Exception e)
{
throw e;
}
}
private void ExceptionThrow()
{
throw new NotImplementedException();
}
{
try
{
Test1();
}
catch (Exception ex)
{
System.Diagnostics.Debug.WriteLine("-----------Test1");
System.Diagnostics.Debug.WriteLine(ex.StackTrace);
}
try
{
Test2();
}
catch (Exception ex)
{
System.Diagnostics.Debug.WriteLine("-----------Test2");
System.Diagnostics.Debug.WriteLine(ex.StackTrace);
}
}
private void Test1()
{
try
{
ExceptionThrow();
}
catch (Exception e)
{
throw;
}
}
private void Test2()
{
try
{
ExceptionThrow();
}
catch (Exception e)
{
throw e;
}
}
private void ExceptionThrow()
{
throw new NotImplementedException();
}
実行結果はこんな感じ。
-----------Test1
場所 WindowsFormsApplication1.Form1.ExceptionThrow() 場所 C:\Users\hoge\AppData\Local\Temporary Projects\WindowsFormsApplication1\Form1.cs:行 66
場所 WindowsFormsApplication1.Form1.Test1() 場所 C:\Users\hoge\AppData\Local\Temporary Projects\WindowsFormsApplication1\Form1.cs:行 49
場所 WindowsFormsApplication1.Form1.Form1_Load(Object sender, EventArgs e) 場所 C:\Users\hoge\AppData\Local\Temporary Projects\WindowsFormsApplication1\Form1.cs:行 23
-----------Test2
場所 WindowsFormsApplication1.Form1.Test2() 場所 C:\Users\hoge\AppData\Local\Temporary Projects\WindowsFormsApplication1\Form1.cs:行 61
場所 WindowsFormsApplication1.Form1.Form1_Load(Object sender, EventArgs e) 場所 C:\Users\hoge\AppData\Local\Temporary Projects\WindowsFormsApplication1\Form1.cs:行 32
場所 WindowsFormsApplication1.Form1.ExceptionThrow() 場所 C:\Users\hoge\AppData\Local\Temporary Projects\WindowsFormsApplication1\Form1.cs:行 66
場所 WindowsFormsApplication1.Form1.Test1() 場所 C:\Users\hoge\AppData\Local\Temporary Projects\WindowsFormsApplication1\Form1.cs:行 49
場所 WindowsFormsApplication1.Form1.Form1_Load(Object sender, EventArgs e) 場所 C:\Users\hoge\AppData\Local\Temporary Projects\WindowsFormsApplication1\Form1.cs:行 23
-----------Test2
場所 WindowsFormsApplication1.Form1.Test2() 場所 C:\Users\hoge\AppData\Local\Temporary Projects\WindowsFormsApplication1\Form1.cs:行 61
場所 WindowsFormsApplication1.Form1.Form1_Load(Object sender, EventArgs e) 場所 C:\Users\hoge\AppData\Local\Temporary Projects\WindowsFormsApplication1\Form1.cs:行 32
0 件のコメント:
コメントを投稿