У меня нет контроля над кодом, который я выполняю. Это функция третьей стороны, но не введенная пользователем. Это вещи, которые версируются, поэтому непрактично, что я ткнул туда и изменил все die() во что-то более нормальное. Потому что новая версия время от времени приходит, а затем я могу парадоксально сделать код еще более неуверенным, пытаясь испортить ему плохую обработку ошибок.есть способ оценить фрагмент кода php, в котором присутствует die() или exit(), и вернуться к основному коду, если он вызван?
так скажем, у нас есть функция:
fuction myfunc() {
// lot's of complicated code
if (!is_file('myfile.txt') exit('file not found');
// and so on
}
То, что я пытаюсь сделать, это несколько запустить этот кусок кода и вернуться к своему основному потоку, а затем действовать в соответствии с этой ошибкой.
Я пробовал die()
или eval()
, но это возвращает весь скрипт. Bummer?
Не могли бы вы использовать это? http://php.net/manual/en/function.override-function.php – markdwhite
@markdwhite: на самом деле это не так, потому что это довольно сложная вещь, она вызывает другие функции и объекты, и в каждой версии есть изменения, и я довольно не имеют права совать в каталог этого кода и изменить там вещи, он подключается к db, поэтому, если я испорчу что-то, что не будет красивым. – rsk82
Если эта вещь фактически предполагается использовать в качестве библиотеки, тогда она никогда не должна делать такую обработку ошибок Braindead. Вы говорите о гипотетических случаях или о реальных проблемах, которые у вас были с этим? На самом деле есть тонна больше вещей, о которых вы должны беспокоиться, что любой неподтвержденный код может испортиться, а не уверен, почему вы специально фокусируетесь на 'die'. Тестирование библиотеки перед ее выпуском в производство кажется единственным реалистичным вариантом. – deceze