Alternatively if the structure must really be kept, then deal with errors in a first switch, read value *after* switch and deal with other errors there, then start a second switch, and adjust the documentation accordingly?
switch errors read if errors // no error switch
it's now something more like
switch
error-conditions
if no-errors
read
if was a boolean
switch last-state
It doesn't strike me as much cleaner, but it's no worse, either.