如何确定从哪里来的异常?

时间:2015-07-18 22:30:16

标签: .net exception

以下是代码结构:

 try
    {
       --outter code block;

       try
         { 
            --inner code block;
         }

        catch(Exeption ex)
        {
          throw new Exception() 
          --inner catch block
        }
    }
    catch(Exeption ex) 
    {
       --outter catch block
    }    

如果在 outter code block 中生成异常或者在内部catch块中抛出异常,我如何确定outter catch block?

2 个答案:

答案 0 :(得分:3)

如果你计划抛出一个新的异常,或者只是使用try { //outter code block; try { //inner code block; } catch(Exeption ex) { throw new MySpecialException("Some Extra Information", ex); // or throw; } } catch(Exeption ex) { //ex.InnerException contains the "ex" from up above if you used MySpecialException // or ex will be the same exception with the same stack trace if you used throw; } 来让异常冒泡,那么你处理这个问题的方法是内部代码块应该在其throw new Exception参数中包含execption。 / p>

throw;

注意,执行Frame.BackStack.Clear(); 被认为是非常糟糕的做法,你应该总是抛出更多的派生异常或your own user exception,并且你抛出的异常应该添加一些新的信息。如果您不需要创建新的例外来添加更多信息,请使用var frame = Window.Current.Content as Frame; frame.BackStack.Clear();

答案 1 :(得分:1)

抛出不同类型的异常或将不同的字符串参数传递给构造函数。