Qual a forma certa do try / Catch

3 respostas
henry.everton

Pessoas Boa tarde!!!!

Bom eu estou com uma dúvida. Estou dando uma olhada na faculdade em try / catch e estou percebendo que o pessoal não está usando de uma forma correta. Estão tipo colocando pra retornar boolean pra ver se está ok, utilizando o if e estiver certo e o else caso esteja errado, apresentando uma mensagem.

Bom eu gostaria de saber como usar try Catch nesta situação aqui. eu instanciei uma classe Login e estou chamando o setNome. Caso ele esteja errado quero que ele gere uma exception, imprima o erro como no catch e volte pedindo o usuário.

Alguem ai pode me ajudar?

Vou colocar o que eu já fiz aqui. Classe Login:
public class Login{
		
	private String nome="";
	private String senha="";
	
	public void setNome(String nome){
		if(!nome.equals("")){
			this.nome = nome;
		}
	}
	public void setSenha(String senha){
		if(!senha.equals("")){
			this.senha = senha;
		}
	}
	public String getNome(){
		return(this.nome);
	}
	public String getSenha(){
		return (this.senha);
	}
}

Classe Usuario

import java.util.Scanner;
public class Usuario{

		public static void main(String args[]){
			String nome;
			try{
				
			Scanner src = new Scanner(System.in);
			System.out.println("Digite seu usuário");
			Login logins = new Login();
			logins.setNome(nome = src.nextLine());
			System.out.println(logins.getNome());
			
					}
			catch(NullPointerException e){
				
				System.out.println("você nao digitou nada");
				
				// Aqui dando este erro eu quero voltar para o Digite o seu usuário novamente
				
					}
			}
		}

Agradeço de já a ajuda!!!

3 Respostas

smkk

olá... aqui está o seu código modificado!

public class Login{
		
	private String nome = "";
	private String senha = "";
	
	public void setNome(String nome) throws ValorInvalidoException{
		if(!nome.equals("")  && !(nome == null)){
			this.nome = nome;
		} else {
			throw new ValorInvalidoException();
		}
	}
	
	public void setSenha(String senha) throws ValorInvalidoException{
		if(!senha.equals("")  && !(senha == null)){
			this.senha = senha;
		} else {
			throw new ValorInvalidoException();
		}
	}
	
	public String getNome(){
		return this.nome;
	}
	
	public String getSenha(){
		return this.senha;
	}
}
public class ValorInvalidoException extends Exception {

	public ValorInvalidoException() {
		super("Você não digitou nada!");
	}
	
}
import java.util.Scanner;

public class Usuario {

	public static void main(String args[]) {
		try {

			Scanner src = new Scanner(System.in);
			System.out.println("Digite seu usuário");
			Login logins = new Login();
			logins.setNome(src.nextLine());
			System.out.println(logins.getNome());

		} catch (ValorInvalidoException e) {
			
			System.out.println(e.getMessage());
			main(args);
			
		}
	}
}
henry.everton

com isso eu consigo imprimir da forma que eu quero?

e se caso fosse um unico parametro errado e nao a main inteira… como eu faria pra um unico parametro.

smkk

olá, acho que assim resolve seu problema:

import java.util.Scanner;

public class Usuario {

	public static void main(String args[]) {
		Scanner src = new Scanner(System.in);

		lerUsuario(src);
	}

	private static void lerUsuario(Scanner src) {
		try {
			System.out.println("Digite seu usuário");
			Login logins = new Login();
			logins.setNome(src.nextLine());
			System.out.println(logins.getNome());
		} catch (ValorInvalidoException e) {
			System.out.println(e.getMessage());
			lerUsuario(src);
		}
	}
}
Criado 18 de outubro de 2007
Ultima resposta 18 de out. de 2007
Respostas 3
Participantes 2