Add some exception handling and process known errors?

Is this a state machine? (ie will know if it fails to return to the 'connection' state, from the 'reading' state)?