Most of the applications I have written involve this sort of architecture. Depending on the safety specs of the test, I have needed to shut things off in the state machine (power, motors, etc), immediately after receiving an out of range measurement. I have made extensive use of the built in error handling (specifically cases structures wired to the error cluster), and more specifically, to the "stop" terminal in loops (loops that are inside states).
I use a queue for the error, and upon detection of an erroneous measurement I enqueue a 'true' error cluster element with the appropriate error code, and then any code I have running inside the state machine will stop 'immediately' (at the end of the current loop iteration/state - depending on safety).
Hope this helps.