Debo analizar esto de mejor manera, porque según yo, si pones el try y el catch dentro del while, no debería terminar el programa... aunque claro, no soy un experto en java...
Déjame leo un poco y analizo esto y te respondo.
¡Saludos!
Edito: ahora que veo bien tu código, creo que la condición del while no es correcta, pues estás diciendo que mientras no sea 4 que se ejecute indefinidamente, pero tu opción para salir es el 0