如何将内部catch中捕获的异常传递给嵌套try catch中的外部catch

Ody*_*3us 10 php exception try-catch

我在一个主try catch语句中嵌套try catch,我想知道如果其中一个嵌套的try catch失败,我怎么能使主try catch失败?

这是我的代码:

try 
{    
    try 
    {
        //how can I make the main try catch fail if this try catch fails?
    } 
    catch(Exception $e)
    {
        error_log();
    }       
} 
catch(Exception $e)
{
    error_log();
}
Run Code Online (Sandbox Code Playgroud)

zsa*_*ank 18

之后error_log();在第一个的try-catch,类型throw $e;(在新行).这将再次抛出错误,外部try-catch将处理它.


zzz*_*Bov 5

您应该为各种不同类型的Exception扩展Exception.这样你就可以触发一个特定的try-catch块:

try
{
  ...
  try
  {
    throwSomeException();
  }
  catch ( InnerException $e )
  {
    ...do stuff only for InnerException...
  }
  ...
}
catch ( Exception $e )
{
  ...do stuff for all types of exception...
}
Run Code Online (Sandbox Code Playgroud)

此外,您可以链接catch语句以在单个try-catch中触发不同的块:

try
{
  ...
}
catch ( SpecificTypeOfException $e )
{
  ..do something specific
}
catch ( TypeOfException $e )
{
  ..do something less specific
}
catch ( Exception $e )
{
  ..do something for all exceptions
}
Run Code Online (Sandbox Code Playgroud)