By exploring given example we could say that
- throw; preserve its pointer, i mean StackTrace from oregional source.
- Where as with throw warper we loose StackTrace.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace throw_and_throw_ex_in_Csharp
{
class Program
{
public static void devicebyzero()
{
int devideby = 0;
int a = 9 / devideby; //line no 14
Console.WriteLine(a);
}
static void Main(string[] args)
{
try
{
devicebyzero(); // line no 21
}
catch (Exception)
{
throw; //line no 25
}
//StackTrace
//at throw_and_throw_ex_in_Csharp.Program.devicebyzero() in E:\C# Examples\throw and throw ex in Csharp\throw and throw ex in Csharp\Program.cs:line 14
//at throw_and_throw_ex_in_Csharp.Program.Main(String[] args) in E:\C# Examples\throw and throw ex in Csharp\throw and throw ex in Csharp\Program.cs:line 25
//try
//{
// devicebyzero();//line no 33
//}
//catch (Exception ex)
//{
// throw ex;// line no 37
//}
//at throw_and_throw_ex_in_Csharp.Program.Main(String[] args) in E:\C# Examples\throw and throw ex in Csharp\throw and throw ex in Csharp\Program.cs:line 37
//at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
//at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
//try
//{
// devicebyzero(); // line no 46
//}
//catch (Exception ex)
//{
// throw new Exception("Error in 3rd block");//line no 50
//}
//at throw_and_throw_ex_in_Csharp.Program.Main(String[] args) in E:\C# Examples\throw and throw ex in Csharp\throw and throw ex in Csharp\Program.cs:line 50
//at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
//at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
//try
//{
// devicebyzero();//line no 60
//}
//catch (Exception ex)
//{
// throw new Exception("Error in 3rd block",ex);//line no 64
//}
//at throw_and_throw_ex_in_Csharp.Program.Main(String[] args) in E:\C# Examples\throw and throw ex in Csharp\throw and throw ex in Csharp\Program.cs:line 64
//at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
//at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
//Console.Read();
}
}
}
