Actions

API16

JError/throwError

From Joomla! Documentation

< API16:JError
Replacement filing cabinet.png
This Namespace has been archived - Please Do Not Edit or Create Pages in this namespace. Pages contain information for a Joomla! version which is no longer supported. It exists only as a historical reference, will not be improved and its content may be incomplete.

[<! removed edit link to red link >]

<! removed transcluded page call, red link never existed >

Contents

Syntax

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

Defined in

libraries/joomla/error/error.php

Importing

jimport( 'joomla.error.error' );

Source Body

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;
}

[<! removed edit link to red link >] <! removed transcluded page call, red link never existed >

Examples

<CodeExamplesForm />