Primeiro nem fui eu postei o código, me confudiram ali em cima.
Segundo vlw pela foto, e isso é um urso, da uma olhada no fucinho aushusahusa!
Terceiro imagina que eu tenha o seguinte codigo
static void metodoDoCaraiQueValidaDrogaNenhuma(int x) throws NumberFormatException{
if(x < 0){
throw new NumberFormatException("Numerinho sem vergonha que presta pra porra nenhuma " + x);
}
else{
System.out.println("Isso sim é um numero sangue bão " + x);
}
}
public static void main(String[] args) {
try {
metodoDoCaraiQueValidaDrogaNenhuma(1);
metodoDoCaraiQueValidaDrogaNenhuma(-1);
} catch (Exception e) {
System.out.println(e.getLocalizedMessage());
}
}
Tem a seguinte saida
run:
Isso sim é um numero sangue bão 1
Numerinho sem vergonha que presta pra porra nenhuma -1
BUILD SUCCESSFUL (total time: 0 seconds)
Digamos eu posso usar as excecoes ao invés de controle por variavel para o controle de fluxo ? Fica muito lento digamos se um método quando dá algum erro de regra de negocio mandar uma exceção ou setar a variável de retorno com -1. e testar com um if depois ?
Exemplificando
static int metodoDoCaraiQueValidaDrogaNenhuma(int x) {
int retorno;
if (x < 0) {
retorno = -1;
} else {
System.out.println("Isso sim é um numero sangue bão " + x);
retorno = x;
}
return retorno;
}
public static void main(String[] args) {
int x = 1;
if (metodoDoCaraiQueValidaDrogaNenhuma(x) < 0) {
System.out.println("Numerinho sem vergonha que presta pra porra nenhuma " + x);
}
x = -1;
if (metodoDoCaraiQueValidaDrogaNenhuma(x) < 0) {
System.out.println("Numerinho sem vergonha que presta pra porra nenhuma " + x);
}
}
Lógico que é um exmplo ridiculo, mas neste caso é preferivel o primeiro metodo pois fica mais legivel. O que eu não sei é se é sacrificado muito desempenho em comparação aos if’s do segundo.
Abraço.
ps: criando esses metodos eu aprendi que não é preciso ter um throws na declaração do método para a exception ser tratado no método que o chamou rsrs.