If the server disappears in the middle of an RMI call, it's no surprise you're seeing an exception on the client side! I'm guessing you're just calling System.exit() in the remote method. Instead,
you should ideally call UnicastRemoteObject.unexportObject(obj, false) on all of your live servants, and then start a new
thread which sleeps for a few seconds (to give the call to Exit() time to return, and then calls Exit; i.e.,
The empty catch blocks are OK in this case; you really don't care if there are errors, you just want to shut down.