Existem as exceções geradas pela VM, ou seja, quando vc programador faz uma besteira como isso aqui:
Ou quando vc faz isso aqui:
int x[] = new Integer[10];
System.out.println(x[11]); //ArrayIndexOutOfBoundsException
E existem exceções que você mesmo cria. Como por exemplo:
public void escrever(String texto) {
if (texto == null) {
throw new TextoInvalidoException("O texto não pode ser nulo!");
}
System.out.println(texto);
}
Algumas exceções do Java são feitas exclusivamente para o programador lançar, como a IllegalArgumentException.
Não confundir as exceptions da VM com as exceções que a API do java lança. Por exemplo, a SQLException e a IOException não é uma exceção da VM. As exceções da VM geralmente referem-se a erros de programação.
Além das exceptions a VM também pode lançar Errors. São sinalizações de situações não recuperáveis, como falta de memória ou estouro da pilha.
Acho que quer dizer sobre as checkedException e uncheckedException.
UncheckedException são subclasses de RuntimeException ou Error, e acontecem em tempo de execução da aplicação. Geralmente não devem ser tratadas.
CheckedException são geralmente subclasses de Exception e devem ser tratadas.
É fácil reconhecer uma exceção de compilação(CheckedException) pois são aquelas que o IDE avisa você. Tipo IOException.
O programador também pode criar suas próprias exceções ou lançar uma “throws new Exception(“Erro”);”.
cara essas exeções listadas como algumas outros são exceções não verificadas
ou seja são exceções que o programador não pressisa circundalas com bloco
try/catch. vc ate pode circundalas casso vc queira.
toda e qualquer exception que seja uma RuntimeException, o compilador não forçara
o programador a circundar o codigo que lança um RuntimeException. Por que as mesma
geralmete são exceções de tempo de execução, geralmente causadas por erros de logica
do proprio programador como tentar acessar um indece de matriz que não seja valido
como -1, ou dividir um numero por zero.
esses codigos serial compilados, mas no tempo de execução serial lançadas RuntimeExecption.
So uma coisa, igual o Vini falou á exceçao NumberFormatException que herda de IllegalArgumentExceptio é unchecked, mas que geralmente tb fica por conta do programador lança-la.
A IllegalArgumentException é uma RuntimeException lançada pelo programador. IndexOutOfBoundsException também. Como o everton falou, NumberFormatException também.
É muito comum se criar filhas delas, com diversas exceções Unchecked, todas lançadas pelo programador. Não é muito incomum ver gente lançando diretamente a RuntimeException também.
É melhor não confundir.
Exceções lançadas pela VM são RuntimeExceptions ou Errors, e ocorrem por erros de programação, sem que alguém tenha escrito nenhum código com “throw” para lança-las.
Os casos mais comuns são:
Fazer casts impossíveis:
String x = 10;
Integer y = (Integer)x; //Lança automaticamente uma ClassCastException
Acessar índices inválidos de arrays primitivos:
int x[] = 10;
x[10] = 0; //ArrayIndexOutOfBoundsException
Tentar acessar um objeto nulo:
String x = null;
x.split(10); //NullPointerException
Tentar dividir por zero:
int a = 10;
int b = 10 - a;
int c = a / b; //ArithmeticException
Além dessas, a VM lança automaticamente erros. Eles terminam com “Error” e nunca devem ser lançados pelo programador, ou capturados por catch (exceto para um log). São situações irreversíveis. O mais comum é o OutOfMemoryError, mas um erro de programação pode gerar o StackOverflowError. Também já presenciei algumas vezes o ThreadDeath, mas pq um programador fazia uso incorreto do método stop(). Se você tentar iniciar a AWT num sistema sem monitor, você também pode obter um AWTError (embora versões mais modernas do Java lancem apenas uma HeadlessException).
Agora, a regra é: Se for uma exception da VM, sempre será RuntimeException.
Se for uma exception do programador, pode ser uma Runtime ou uma Exception verificada.
Viny, ótimas explicações, eu tenho muitas duvidas com relação a isso, mas agora clareou um pouco mais minhas idéias, esse tópico com certeza vai para os meus favoritos, abraços a todos.