Joomla - молча проглотить JError :: riseError-Message - PullRequest
0 голосов
/ 18 февраля 2011

Эй, ребята, возможно ли перехватить и проигнорировать JError :: RaiseError?Я использую JDatabase, и если пользователь действует «глупо», может появиться повторяющаяся запись.Но это не проблема и может быть проигнорировано.

К сожалению, эта ошибка напечатана на дырочной странице.Теперь я не хочу отбрасывать новый запрос, просто чтобы проверить, существует ли этот первичный ключ.

Ответы [ 3 ]

2 голосов
/ 12 августа 2011

Чтобы отключить выдачу исключений Joomla в вызове пути выполнения:

JError::setErrorHandling(E_ALL, "ignore");

В качестве альтернативы вы можете установить свой собственный обработчик:

JError :: setErrorHandling (E_ALL, 'callback', массив ('myClass', 'myErrorHandlerFunction'));

1 голос
/ 20 февраля 2011

, если при перезаписи существующей строки не имеет значения, вы можете использовать

REPLACE INTO 'table' set 'field'=1 etc etc

ЗАМЕНА MYSQL

, которая создаст строку или заменит существующую.Это должно сделать так, чтобы не возникало никаких ошибок, если строка существует.

1 голос
/ 19 февраля 2011

НЕТ ESCAPE от повышениеError

Ниже приведен метод рейза Joomla. Как вы можете видеть, он использует jexit , который вызывает php exit

function & raise($level, $code, $msg, $info = null, $backtrace = false)
{
    jimport('joomla.error.exception');

    // build error object
    $exception = new JException($msg, $code, $level, $info, $backtrace);

    // 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 =& JError::$function ($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()
        );
    }

    //store and return the error
    $GLOBALS['_JERROR_STACK'][] =& $reference;
    return $reference;
}
...