区分原始的System.Exception并抛出新的Exception / ApplicationException?

时间:2016-02-12 13:44:27

标签: c# .net exception-handling

我已经解决了这个问题,我发布了。

对于疯狂调用的方法,是否可以区分原始的System.Exception(即throw ex;)和新的异常(即。throw new Exception("Specific error", ex);)或新的{{1} }?

ApplicationException

感谢。

2 个答案:

答案 0 :(得分:1)

您可以指定要捕获的异常类型(请注意排序)。异常具有InnerException属性,该属性可能包含导致当前异常的其他信息。

try
{
    MethodThatBlowsUp();
}
catch (ApplicationException appex)
{
    //handle 
}
catch (Exception ex)
{
    //handle
}

答案 1 :(得分:0)

结束使用:

public void InsertNewCar()
{
    try
    {
        Car myCar = new Car();
        myCar.Insert();
    }
    catch (Exception ex)
    {
    if (ex is ApplicationException)
        alert("Something missing Msg");
    else /* This is the original exception */
        alert("Something wrong generic error");
}

public void Insert()
{
    try
    {
        SqlHelper.ExecuteNonQuery(ConnString, CommandType.Text, sqlInsert);
    }
    catch (SqlException ex)
    {
        if (ex.Number == 515)
        {
            throw new ApplicationException("Missing something", ex);
        }
        else
        {
            throw ex;
        }
    }
}