27

try-catch在 SharePoint 的自定义 C# 代码中嵌套了块。当内部块内的代码引发异常时,我只想在一个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

4

2 回答 2

30

如果您不想在这种情况下执行外部异常,则不应从内部 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
}
于 2013-09-13T09:59:47.093 回答
18

如果内部处理异常,外部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 {}

于 2013-09-13T10:10:39.593 回答