Exceptions Flashcards

1
Q

O que são checked Exceptions?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

O que são unchecked exceptions?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Como uma exceção pode ser lançada?

A

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.");
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Quando o bloco Catch não é obrigatório?

A
Quando existir um finally.
try {
	fall();
} finally {
	System.out.println("all better");
}

try { // DOES NOT COMPILE
fall();
}

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Quando o bloco finally é executado?

A

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();
}
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Como usar dois blocos catch em um bloco try?

A
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");
	}
}
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Uma exceção que herda de RunTimeException é checked ou unchecked?

A

Unchecked
Uma Runtime Exception tende a ser inesperada mas não necessariamente fatal. Por exemplo acessar uma posição invalida de um array.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Quando uma exceção é inacessível?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

O que acontece se uma exceção é inacessível?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

O que acontece quando se declara um catch mas não existe um throw para aquele catch?

A

Declarar uma exceção que nunca é usada também é considerado unreachable code.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Quais são os três tipos de exceções que é cobrado na prova?

A

Runtime Exception
Checked Exception
Erro

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

O que é uma Runtime Exception

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

O que é uma checked exception

A

As checked Exceptions herdam da classe Exceptions, mas não de RuntimeExceptions. Elas devem ser declaradas a mão.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

O que são erros?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

StackOverflowError

A

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);
}

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

NoClassDefFoundError

A

Este erro ocorre quando uma classe estava disponível na hora da compilação mas não está disponível na hora da execução.

17
Q

IOException

A

Checked Exception

Lançada quando se tem problema ao tentar ler ou escrever em um arquivo.

18
Q

FileNotFoundException

A

Checked Exception

Lançada quando o código tenta fazer referencia a um arquivo que não existe.

19
Q

A classe FileNotFoundException herda de qual classe?

A

FileNotFoundException é uma subclasse de IOException.

20
Q

ArithmeticException

A

Lançada pela JVM quando o código tenta fazer uma divisão por zero.

int answer = 11 / 0;

21
Q

ArrayIndexOutOfBoundsException

A

Lançado pela JVM quando o código tenta acessar uma posição inválida em um array.

int[] countsOfMoose = new int[3];
System.out.println(countsOfMoose[-1]);

22
Q

ClassCastException

A

Lançado pela JVM quando se tenta fazer um cast impossível:

O código abaixo não compila:
String type = “moose”;
Integer number = (Integer) type; // DOES NOT COMPILE

23
Q

NullPointerException

A

Lançado pela JVM quando se faz uma referencia à null quando um objeto é requerido:
String name;

public void printLength() throws NullPointerException {
System.out.println(name.length());
}

24
Q

NumberFormatException

A

ançado pela JVM quando se tenta converter uma String para um tipo numérico, mas a String não tem o formato necessário.

Integer.parseInt(“abc”);

25
Q

Quando uma classe filha pode lançar uma exceção?

A

Somente quando a classe pai lançar uma exceção mais abrangete.
A exceção da classe filha nunca pode ser mais abrangente que a da classe pai.

26
Q

O método main pode lançar uma exceção?

A

Sim

Qualquer método pode lançar exceção.

27
Q

O que acontece com exceções não capturadas?

A

Se uma exceção não for capturada, a Thread será encerrada. E qualquer resquício de código não será executado.

A execução normal de um método não é retomada caso uma exceção seja lançada. A exceção será propagada na pilha de metodos que o invocou até que um método a capture ou a JVM termine a thread.

28
Q

IllegalArgumentException

A

Normalmente lançada pelo usuário.

Pode ser usada para validar valores que não estão de acordo com os parâmetros do método.

Por exemplo, o código abaixo recebe um inteiro com tamanho até 100:

public static void meuMetodoTeste(int param1){
if (param1 > 100){
throw new IllegalArgumentException
(“O param1 não pode ser maior que 100,
viola a integridade da aplicação”);
}
}