C# 使用throw,throw ex,throw new Exception() 抛异常区别与建议

异常代码

try
{
    RunThrowException();
}
catch (Exception ex)
{
    throw;
    // throw ex;
    // throw new Exception("包装的异常", ex);
}

static void RunThrowException()
{
    var b = Console.ReadLine(); 
    var = int.Parse(b); 
}

如果输入的是string类型,会抛异常

throw: 来抛出所有异常堆栈,包含int.Parse()内部的异常。
throw ex: 不会抛出内部异常堆栈。它会将到现在为止的所有信息清空,认为你catch到的异常已经被处理了, 只不过处理过程中又抛出新的异常,从而找不到真正的错误源。
throw new Exception()包装一个异常,把内部异常Exception也抛出,这样抛出的异常是最全面详细的异常。

推荐使用Throw 或者Throw new Exception()