Duvida simples JOptionaPane

Boa noite galera tenho a seguinte situacao

try{
op = Integer
		.parseInt(JOptionPane
					.showInputDialog(
								null,
								"Digite a opção desejada\n1-Cadastro\n2-alteração\n3-Listar contatos\n4-Remover\n5-Sair",
								"Menu Inicial da Agenda do Diegão", 1));
		
		
		
		do {
			
			switch (op) {
	
cases do switch;;;




 //no fim dos cases tenho esse cath
}catch (Exception e) {
		// TODO: handle exception
	JOptionPane.showMessageDialog(null, "Ocorreu um erro durante a inserção da opção do menu", "erro",JOptionPane.ERROR_MESSAGE);
	
	e.printStackTrace();
	main(args);
	}

essa janela me da um ok e um cancelar , porem qndo o clico em cancelar caio nessa exceção como faser pra qndo o usuario clicar em cancelar ele sair , porem mantendo o bloco acima.

desde ja grato pela ajuda .

TASF,

Você pode criar uma variável String para armazenar o retorno de showInputDialog. E testar se essa variável é null para saber se o usuário cancelou a janela de diálogo.
Veja o exemplo:

import javax.swing.*; public class TesteDialog{ public static void main(String args[]){ String resposta = JOptionPane.showInputDialog(null,"Digite a opção desejada\n1-Cadastro\n2-alteração\n3-Listar contatos\n4-Remover\n5-Sair","Menu Inicial da Agenda do Diegão", 1); if(resposta==null){ //código para sair System.out.println("cancelou"); System.exit(0); } try{ int op = Integer.parseInt(resposta); System.out.println("opcao "+op); }catch(Exception e){ System.out.println(e.getMessage()); } } }