Возможно ли создать исключение, которое, по-видимому, происходит от вызывающей функции, а не внутри вызываемой функции.PHP исключение исключения из вызывающего абонента
function assert_foo(){
throw new CustomException();
}
/* ... */
assert_foo(); // <-- I want the exception to seem to originate from here */
assert_foo
функция будет использоваться только для тестирования коды, где тест рамка только показывает место, где исключение было инициировано из и не в полном стеке вызовов. Единственной логикой в assert_foo
является проверка состояния.
Я попытался переопределить Exception :: getTrace, но Cannot override final method Exception::getTrace()
.
Это невозможно, и если вам это нужно, чтобы что-то сделать (что?), то вы взяли неправильный путь. Возможно, 'if (! Assert_foo()) генерирует новый CustomException()'? – Jon
Нет, я искренне сомневаюсь в этом. Наличие ваших утверждений вызывает исключения - это довольно сумасшедшее поведение; они должны полностью прекратить выполнение, а не поднимать глотательные исключения, которые могут быть пойманы и проигнорированы. Вы хотите встроенный 'assert'. – meagar
Вы можете поймать свое исключение, в котором вызывается assert_foo, и отбросить произвольное выполнение оттуда, чтобы устранить то, что вы хотите достичь. – Artur