random question: can this throw out of bounds exceptions? I think throwing IOExceptions will do the right thing (Protocol error) but other runtime exceptions won't