Механизм вычислений должен выдавать обычное исключение PHP, которое можно отловить.Логика внешнего интерфейса, которую я использую для отладки ошибок механизма вычислений:
<code>// enable debugging
PHPExcel_Calculation::getInstance()->writeDebugLog = true;
$formulaValue = $sheet->getCell($cell)->getValue();
echo '<b>'.$cell.' Value is </b>'.$formulaValue."<br />\n";
$calculate = false;
try {
$tokens = PHPExcel_Calculation::getInstance()->parseFormula($formulaValue,$sheet->getCell($cell));
echo '<b>Parser Stack :-</b><pre>';
print_r($tokens);
echo '
';$ Calculate = True;} catch (Exception $ e) {echo "PARSER ERROR:". $ e-> getMessage (). "\ n "; echo '
Стек анализатора: - ';
print_r($tokens);
echo '
';} if ($ Рассчитать) {// вычислить try {$ cellValue = $ sheet-> getCell ($ cell) -> getCalculatedValue ();} catch (Exception $ e) {echo "ОШИБКА ДВИГАТЕЛЯ РАСЧЕТА:". $ e-> getMessage (). "\ n "; echo '
Журнал оценки:
';
print_r(PHPExcel_Calculation::getInstance()->debugLog);
echo '
';}}
Это дает много дополнительной информации о том, как работает механизм вычислений, что может быть чрезвычайно полезнопри отладке.