Сделать общий решатель для проблемы: неопределенный индекс в массиве для этой программы - PullRequest
0 голосов
/ 27 сентября 2011

Я делаю программу в команде программистов, и было решено, что для конкретной системы мы будем использовать массив. В большинстве случаев все индексы в массиве будут по-прежнему правильно установлены, могут возникнуть неопределенные индексы. Использование isset () или array_key_exists () сделает код слишком медленным (потому что нам понадобится много «если» и «если» - медленным) и слишком «грязным» (слишком много кода и повторяющегося кода), так что оба варианта не подходят. Я уже заметил функцию set_error_handler (), но я также не знаю, является ли это лучшим вариантом.

Основная задача: Когда этот конкретный массив вызывает неопределенный индекс, он должен быть перехвачен, решен (записать ситуацию в журналы), и сценарий должен продолжаться, как будто ничего не произошло. Какой лучший способ сделать это?

ПРИМЕЧАНИЕ. Если произойдет какая-либо другая ошибка или предупреждение, я хочу, чтобы PHP обрабатывал его так, как он привык, я хочу, чтобы этот материал создавался только для этого конкретного массива с таким именем.

Надеюсь, я был достаточно ясен

Ответы [ 2 ]

1 голос
/ 27 сентября 2011

вы должны использовать Exception

try{
    if(!isset($values[23])) throw new Exception("index not defined");
    // do dangerous stuff here
}catch(Exception $ex){
    //handle error
}

однако, идеальным решением было бы убедиться, что этого никогда не произойдет.

0 голосов
/ 27 сентября 2011

Попробуйте добавить свой код в операторы try-catch. В улове вы можете записать ошибку.

http://php.net/manual/en/language.exceptions.php

...