我在SharePoint的自定义C#代码中嵌套了try-catch
块。当内部catch
块内的代码抛出异常时,我只想在一个try
块(内部块)中执行代码。
try
{
//do something
try
{
//do something if exception is thrown, don't go to parent catch
}
catch(Exception ex) {...}
}
catch(Exception ex)
{ .... }
我知道我可以使用不同类型的例外,但这不是我想要的。
摘要
如果发生异常,除了内部catch
之外,我不希望它到达父catch
。
答案 0 :(得分:25)
如果您不想在这种情况下执行外部异常,则不应该从内部catch块中抛出异常。
try
{
//do something
try
{
//do something IF EXCEPTION HAPPENs don't Go to parent catch
}
catch(Exception ex)
{
// logging and don't use "throw" here.
}
}
catch(Exception ex)
{
// outer logging
}
答案 1 :(得分:12)
如果内部catch
处理了异常
catch
不会触发
如果您希望外部catch
也可以触发,则必须执行以下操作:
try
{
//do something
try
{
//do something
}
catch(Exception ex)
{
// do some logging etc...
throw;
}
}
catch(Exception ex)
{
// now this will be triggered and you have
// the stack trace from the inner exception as well
}
基本上,正如您现在拥有代码一样,外部catch
将不会从内部try {} catch {}