php, can exceptions be thrown 2 levels up?

前端 未结 3 1233
滥情空心
滥情空心 2021-01-18 07:19

I know this is a weird on, but in my code, i have development mode errors, and production mode errors. This is the function i have:

private function error($m         


        
相关标签:
3条回答
  • 2021-01-18 07:35

    Use Multiple catch Blocks use admin table which has field

    Mode    Value 
    0     Production
    1     Debug     
    

    the first catch which matches the exception is executed

    Example

     try {
    
        if (!$bDBConnection && $row['mode'] ==0 ) {
           throw new Produciton_DBException("Problem with Database");
        }
        else
        {
            throw new Debug_DBException("Problem with Database");
        }
    
     }
     catch(Produciton_DBException $e)
     {
    
      // display suitable error messages
     }
     catch(Debug_DBException $ex)
     {
       // Exception falls through until a match is found
     } 
    
    0 讨论(0)
  • 2021-01-18 07:43

    Just omit the try/catch block. Exceptions automatically propagate up as far as they can until something catches them; you don't need to explicitly re-throw them at every level of the call stack.

    This...

    try{
        $this -> error( "Invalid Link After Connect.", mysql_error () );
    } catch ( Exception $exp ){
        throw $exp;
    }
    

    is exactly equivalent to this:

    $this -> error( "Invalid Link After Connect.", mysql_error () );
    
    0 讨论(0)
  • 2021-01-18 07:49

    An exception will automatically travel up the call chain until it reaches the highest level. If it's not caught there, program execution terminates due to an uncaught exception. The whole point of exceptions is to be able to have errors bubble up. You don't need to throw harder or do anything special to "throw it up 2 levels", that's what it does by definition.

    0 讨论(0)
提交回复
热议问题