API16

JError/throwError

From Joomla! Documentation

< API16:JError
Revision as of 05:08, 30 March 2010 by Doxiki (talk | contribs)

The "API16" namespace is an archived namespace. This page contains information for a Joomla! version which is no longer supported. It exists only as a historical reference, it will not be improved and its content may be incomplete and/or contain broken links.

[Edit Descripton]

Template:Description:JError/throwError

Syntax[edit]

static throwError(&$exception)
Parameter Name Default Value Description
&$exception

Defined in[edit]

libraries/joomla/error/error.php

Importing[edit]

jimport( 'joomla.error.error' );

Source Body[edit]

public static function throwError(&$exception)
{
        static $thrown = false;

        // If thrown is hit again, we've come back to JError in the middle of throwing another JError, so die!
        if ($thrown)
        {
                //echo debug_print_backtrace();
                jexit('Infinite loop detected in JError');
        }

        $thrown = true;
        $level = $exception->get('level');

        // see what to do with this kind of error
        $handler = JError::getErrorHandling($level);

        $function = 'handle'.ucfirst($handler['mode']);
        if (is_callable(array('JError', $function))) {
                $reference = &call_user_func_array(array('JError',$function), array(&$exception, (isset($handler['options'])) ? $handler['options'] : array()));
        }
        else {
                // This is required to prevent a very unhelpful white-screen-of-death
                jexit(
                        'JError::raise -> Static method JError::' . $function . ' does not exist.' .
                        ' Contact a developer to debug' .
                        '<br /><strong>Error was</strong> ' .
                        '<br />' . $exception->getMessage()
                );
        }
        //we don't need to store the error, since JException already does that for us!
        //remove loop check
        $thrown = false;
        return $reference;
}

[Edit See Also] Template:SeeAlso:JError/throwError

Examples[edit]

<CodeExamplesForm />