Olá. Eu sou um estudante de programação e gostaria de entender melhor como funciona a criação de Exceptions em Java. Eu gostaria de entender qual a diferença entre uma checked exception e uma unchecked exception. E como eu posso criar cada uma delas.
Olá, vou tentar te ajudar:
Como trabalhar com exceções:
Em Java uma exceção pode ser tratada/capturadas(try-catch) ou lançada (throw).
Quando ocorre uma exceção é criado um objeto chamado “exception object” e é passado para o sistema de execução (runtime system), contendo as informações sobre o erro, o sistema de execução tenta encontrar uma maneira para tratar o erro (catch), caso ele não encontre é emitido o erro:
- try: Dentro desse bloco temos o código que esta sujeito a exceções.
- catch: Dentro desse bloco é onde tratamos os erros.
- finally: Tudo que esta dentro desse bloco será executado(exceto quando acontece um System.exit()), este trecho é executado após o try/catch.
- throw: colocamos na assinatura do método para indicamos que este método pode gerar uma exceção.
Exceções são instanciadas a partir das subclasses:
- Error: São erros internos do sistema e parecem em tempo de execução, exemplo estouro de memória.
- Runtime: erros de programação como manipulação de um objeto com referencia nula.
- Exception: erros que ocorrem em tempo de execução por exemplo abrir uma url incorreta.
Tipos de exceções:
Uma exceção pode ser do tipo “verificada”(checked) ou “não verificada”(unchecked ), as verificadas vem da Classe Exception e o Java nos obriga a tratá-las a partir de (try-catch) ou por (throw), as não verificadas vem da Classe RuntimeException e Error o Java não obriga que sejam tratadas no software.
Quando utilizamos o try-catch ou throw
Quando queremos tratar a exceção no nível que estamos, isto é não deixar a exceção ser tratada por quem chamou o método utilizamos o try-catch, já quando queremos deixar a exceção ser tratada por quem chamou o método.
Criando uma Exceção
public class CPF_Expetion extends Exception
{
private String msg;
public CPF_Expetion()
{
super("CPF Invalido");
this.msg = "CPF Invalido";
}
public String getMessage(){
return msg;
}
}`
Cara, primeiramente muito obrigado pela resposta. Você já me definiu umas coisas que eu não sabia sobre o tratamento de exceções, o que é ótimo.
Tenha uma ótima noite e bom serviço!