Exceções Java - Try...Catch
Exceções Java
Ao executar o código Java, podem ocorrer diferentes erros: erros de codificação feitos pelo programador, erros devido a entrada errada ou outros imprevistos.
Quando ocorre um erro, o Java normalmente para e gera uma mensagem de erro. O termo técnico para isso é: Java lançará uma exceção (jogará um erro).
Java tente e pegue
A try
instrução permite que você defina um bloco de código para ser testado quanto a erros enquanto está sendo executado.
A catch
instrução permite definir um bloco de código a ser executado, caso ocorra um erro no bloco try.
As palavras-chave try
e catch
vêm em pares:
Sintaxe
try {
// Block of code to try
}
catch(Exception e) {
// Block of code to handle errors
}
Considere o seguinte exemplo:
Isso gerará um erro, porque myNumbers[10] não existe.
public class Main {
public static void main(String[ ] args) {
int[] myNumbers = {1, 2, 3};
System.out.println(myNumbers[10]); // error!
}
}
A saída será algo assim:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 10
at Main.main(Main.java:4)
Se ocorrer um erro, podemos usar try...catch
para capturar o erro e executar algum código para tratá-lo:
Exemplo
public class Main {
public static void main(String[ ] args) {
try {
int[] myNumbers = {1, 2, 3};
System.out.println(myNumbers[10]);
} catch (Exception e) {
System.out.println("Something went wrong.");
}
}
}
A saída será:
Something went wrong.
Finalmente
A finally
instrução permite que você execute código, depois try...catch
de , independentemente do resultado:
Exemplo
public class Main {
public static void main(String[] args) {
try {
int[] myNumbers = {1, 2, 3};
System.out.println(myNumbers[10]);
} catch (Exception e) {
System.out.println("Something went wrong.");
} finally {
System.out.println("The 'try catch' is finished.");
}
}
}
A saída será:
Something went wrong.
The 'try catch' is finished.
A palavra-chave arremesso
A throw
instrução permite que você crie um erro personalizado.
A throw
instrução é usada junto com um tipo de exceção . Existem muitos tipos de exceção disponíveis em Java: ArithmeticException
,
FileNotFoundException
, ArrayIndexOutOfBoundsException
, SecurityException
, etc:
Exemplo
Lance uma exceção se a idade for inferior a 18 anos (imprima "Acesso negado"). Se a idade for maior de 18 anos, imprima "Acesso concedido":
public class Main {
static void checkAge(int age) {
if (age < 18) {
throw new ArithmeticException("Access denied - You must be at least 18 years old.");
}
else {
System.out.println("Access granted - You are old enough!");
}
}
public static void main(String[] args) {
checkAge(15); // Set age to 15 (which is below 18...)
}
}
A saída será:
Exception in thread "main" java.lang.ArithmeticException: Access denied - You must be at least 18 years old.
at Main.checkAge(Main.java:4)
at Main.main(Main.java:12)
Se a idade fosse 20, você não receberia uma exceção:
Exemplo
checkAge(20);
A saída será:
Access granted - You are old enough!