Il codice di per sé è tecnicamente sensato/corretto. Non vedo errori grossolani. Invece le problematiche maggiori sono a livello di "design". Questa tua parte di codice, che è per forza in un singolo metodo, fa "troppe" cose:
- presentazione del menù
- gestione dell'input
- validazione dell'input
- gestione della ripetizione in caso di input errato
- esecuzione della opzione scelta
- gestione delle eccezioni (parlo del try-catch) più esterno, quello interno è appropriato dove è.
Sarebbe meglio separare e strutturare meglio tutto quanto, con metodi focalizzati su singoli aspetti e magari sfruttando più classi (ad esempio una specifica che si occupa solo dell'input e non della logica applicativa).