Take a look at the bottom of the Client class. I've tried both switch block and if-else block and the results are the same. I'm wracking my brain to think of why the exception wouldn't be thrown correctly. I tried putting the exception test just after receive(), but it REALLY didn't like that. Also why does it think the clientMainLoop() won't continue?