Exceptions Flashcards
O que são checked Exceptions?
Basicamente podemos ter dois tipos de exceções. As checadas e as não checadas.
Quando envolvemos um método em um try catch, ou um throws é uma checked exception. Pois declaramos a possibilidade de ocorrer uma exceção ali. Por exemplo tentar acessar um arquivo que não existe.
Inclui todas as exceções e suas subclasses que não extendem RuntimeException.
Tendem a ser mais antecipáveis, como por exemplo tentar ler um arquivo que não existe.
O que são unchecked exceptions?
As unchecked exceptions são aquelas que podem surgir durante a execução do código, como tentar acessar uma posição inválida de um array.
Uma Runtime Exception tende a ser inesperada mas não necessariamente fatal. Por exemplo acessar uma posição invalida de um array.
Como uma exceção pode ser lançada?
O código lança uma exceção:
String[] animals = new String[0];
System.out.println(animals[0]);
Ssolicitando que uma exceção seja lançada: throw new Exception(); throw new Exception("Ow! I fell."); throw new RuntimeException(); throw new RuntimeException("Ow! I fell.");
Quando o bloco Catch não é obrigatório?
Quando existir um finally. try { fall(); } finally { System.out.println("all better"); }
try { // DOES NOT COMPILE
fall();
}
Quando o bloco finally é executado?
O bloco finally é sempre executado. Mesmo quando uma exceção não é lançada.
void explore() { try { seeAnimals(); fall(); } catch (Exception e) { getHugFromDaddy(); } finally { seeMoreAnimals(); } goHome(); }
Como usar dois blocos catch em um bloco try?
public void visitPorcupine() { try { seeAnimal(); } catch (AnimalsOutForAWalk e) {// first catch block System.out.print("try back later"); } catch (ExhibitClosed e) { // second catch block System.out.print("not today"); } }
Uma exceção que herda de RunTimeException é checked ou unchecked?
Unchecked
Uma Runtime Exception tende a ser inesperada mas não necessariamente fatal. Por exemplo acessar uma posição invalida de um array.
Quando uma exceção é inacessível?
Java trata as exceções na ordem que elas aparecem. Se for impossível acessar um bloco catch, o código não compila.
Isso pode acontecer quando o primeiro bloco catch é mais amplo que o segundo.
O que acontece se uma exceção é inacessível?
Java trata as exceções na ordem que elas aparecem. Se for impossível acessar um bloco catch, o código não compila.
Isso pode acontecer quando o primeiro bloco catch é mais amplo que o segundo.
O que acontece quando se declara um catch mas não existe um throw para aquele catch?
Declarar uma exceção que nunca é usada também é considerado unreachable code.
Quais são os três tipos de exceções que é cobrado na prova?
Runtime Exception
Checked Exception
Erro
O que é uma Runtime Exception
São excelções que podem aparecer na hora da execução.
São as unchecked exceptions.
Este tipo de exceção estende de RuntimeException. Elas podem ser lançadas pela JVM ou pelo programador.
O que é uma checked exception
As checked Exceptions herdam da classe Exceptions, mas não de RuntimeExceptions. Elas devem ser declaradas a mão.
O que são erros?
Errors estendem a classe Error. Eles são lançados pela JVM.
São usados pela JVM para lançar uma exceção que não tem nada a ver com o código em si, mas sim com o ambiente.
Por exemplo OutOfMemoryError.
Erros podem Indicar um problema
grave que o programa não deve tentar tratar capturar usando um try catch.
StackOverflowError
Quando java chama um método, ele coloca os parâmetros em uma pilha(stack). Se esta pilha encher ou transbordar(overflow) uma exceção é lançada.
Na maioria das vezes quando isso acontece é porque um método chamou a ele mesmo:
public static void doNotCodeThis(int num) {
doNotCodeThis(1);
}