Ir ao conteúdo

Ajuda com tratamento de exceÇÃo (throw e throws)


pauloeduardo2906

Posts recomendados

Postado

Simples, quando alguma coisa sai errada com o seu programa (você pede pro usuário digitar um número e ele coloca um nome, ou o programa pede para alocar mais memória e não consegue) você pode simplesmente parar a execução e mandar uma mensagem de erro pro usuário, e isso não é tão bom, pois o seu programa não sabe que aconteceu um erro, ele só sabe que a execução parou, não seria possível fazer o programa se auto recuperar de um jeito fácil e limpo...

Agora quando você tem exception aí sim você pode tornar explicito e de um jeito simples que algo de errado (ou não esperado) aconteceu, e dessa forma você pode fazer tratamento de erros, melhor ainda você pode escolher onde e de que maneira você trata esse erro fazendo o erro propagar até a classe mais apropriada para isso e mais de melhor de bom ainda, você pode saber onde esse erro se originou com a impressão do stack e ajudar na correção do programa.

Postado

Exceptions podem tratar erros do seu sistema e erros de negócio.

3 Tipos básicos:

1) Exception geral conhecida como Exception, existe a pai dela mas não vem ao caso.

2) Exception específica, devem vir antes da geral, para determinados erros

3) Exception de negócio, criadas por você para algum tratamento especial (IdadeException )

Explicação:

1) Qualquer erro que não tiver esperando, irá cair na Exception Geral, no caso se passar a letra "A" de parâmetro, o comando Integer.parseInt(args[0]); não consegue converter o número e executa um erro.

2) Se o usuário não passar parâmetro a váriavel args[0] não terá conteúdo, portanto ela emitirá um erro (THROWS), no caso eu já espero portando eu coloquei específico no CATCH IndexOutOfBoundsException

3) Não quero que meu sistema rode para menores de 18 anos, criei a IdadeException que consigo ativá-la quando executo

throw new IdadeException("Menor de idade");


public class VerificaIdade {

public static void main(String[] args) {
int idade = 0;
try {
idade = Integer.parseInt(args[0]);

if (idade < 18) {
throw new IdadeException("Menor de idade");
}

System.out.println("BEM VINDO !!");

} catch (IndexOutOfBoundsException e) {
System.out.println("Nao foi passado parametro");
} catch (IdadeException e) {
System.out.println("Erro de negocio:" + e.getMessage());
} catch (Exception e) {
System.out.println("Erro no sistema:" + e.getMessage());
}
}

}

class IdadeException extends Exception {

private static final long serialVersionUID = 1L;

public IdadeException(String msg) {
super(msg);
}

public IdadeException(String message, Throwable cause) {
super(message, cause);
}

public IdadeException(Throwable cause) {
super(cause);
}
}

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!