以下是代码结构:
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?
答案 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)
抛出不同类型的异常或将不同的字符串参数传递给构造函数。