Switch e Try Catch

Boa Noite

Estou com um problema em um método que edita um objeto, meu método recebe o que eu quero editar, nome, idade, cidade, etc e qual o novo valor.

public void editaPessoa(String atributo, String valor) throws ErroException{
		try {
			switch (atributo.toLowerCase()){
			
			case "nome":
				verificaString(valor, "Nome");
				setNome(valor);
				
			case "idade":
				verificaString(valor, "Idade");
				setObjetivo(valor);
				
				
			case "cidade":
				verificaString(valor, "Cidade");
				setCidade(valor);
				
			default:
				throw new Exception("invalido");
			}
		} catch (Exception e) {
			throw new ErroException(e.getMessage());
		}
	
}

Como podem ver acima o codigo, esse “verificador” é para olhar se a string é nula ou vazia, caso for, lança exceção que é pega com o try catch, assim consigo pegar a mensagem da exceção lançada com o verificador e juntar com a outra que vou lançar com o catch.

O problema é, quando executo o método, ele não entra no Case certo, exemplo: estou tentando editar o nome, mas ele entra em todos os cases basicamente inclusive no default e lança exceção quando não deve ser lançada. Não sei mais o que fazer, horas tentando arrumar isso e não da certo.

Obrigado desde já.

Acima do case nome tente por assim

                    case " ":
			verificaString(valor, " ");
			setNome(valor);

e veja o que ele retorna…

Mesma coisa, estou tentando editar o nome mas ele entra no case de idade e lança a exceção de idade invalida. Eu coloquei um Syso em todos eles para ver em qual ele estava entrando e ele tá entrando em todos os case.

O switch executa tudo a partir do case correspondente até encontrar um break.

No teu caso precisas de ter:

 ...
               case "nome":
			verificaString(valor, "Nome");
			setNome(valor);
                        break;
			
		case "idade":
			verificaString(valor, "Idade");
			setObjetivo(valor);
                        break;				
			
		case "cidade":
			verificaString(valor, "Cidade");
			setCidade(valor);
                        break;
1 curtida