The unwanted error message is issued because err_silent is not > 0. Take a look at the value of err_silent with balloon evaluation.
Put your cursor over err_silent in line 31 and wait for its value to be displayed.
Follow the stack to see where err_silent was set.
Click Make Caller Current
twice to evaluateField(),
which has already called
evaluateFieldPrepare() simulating a
complex function that might be manipulating
err_silent.
Click Make Caller Current again to get to printField(), where err_silent is being incremented. printField() has also already called printFieldPrepare(), also simulating a complex function that might be manipulating err_silent.
Notice how err_silent++ and err_silent-- bracket some code.
err_silent could go wrong in either printFieldPrepare() or evaluateFieldPrepare(), or it might already be wrong when control gets to printField().