Manejo de excepciones de Java
Manejo de excepciones de Java
En el tutorial, aprenderemos sobre diferentes enfoques de manejo de excepciones en Java con la ayuda de ejemplos.
En el último tutorial, aprendimos sobre las excepciones de Java. Sabemos que las excepciones terminan anormalmente la ejecución de un programa.
Por eso es importante manejar las excepciones. Aquí hay una lista de diferentes enfoques para manejar excepciones en Java.
- intentar... atrapar bloque
- bloquear finalmente
- lanza y lanza palabra clave
1. Java intenta... atrapar bloque
El bloque try-catch se usa para manejar excepciones en Java. Esta es la sintaxis de try...catch bloque:
try {
// code
}
catch(Exception e) {
// code
}
Aquí, hemos colocado el código que podría generar una excepción dentro del try bloquear. Cada try bloque es seguido por un catch bloquear.
Cuando ocurre una excepción, es capturada por el catch bloquear. El catch el bloque no se puede usar sin el try bloquear.
Ejemplo:Manejo de excepciones usando try...catch
class Main {
public static void main(String[] args) {
try {
// code that generate exception
int divideByZero = 5 / 0;
System.out.println("Rest of code in try block");
}
catch (ArithmeticException e) {
System.out.println("ArithmeticException => " + e.getMessage());
}
}
} Salida
ArithmeticException => / by zero
En el ejemplo, estamos tratando de dividir un número por 0 . Aquí, este código genera una excepción.
Para manejar la excepción, hemos puesto el código, 5 / 0 dentro del try bloquear. Ahora, cuando ocurre una excepción, el resto del código dentro del try se salta el bloque.
El catch El bloque captura la excepción y se ejecutan las declaraciones dentro del bloque catch.
Si ninguna de las declaraciones en el try bloque genera una excepción, el catch se salta el bloque.
2. Java finalmente bloque
En Java, el finally bloque siempre se ejecuta sin importar si hay una excepción o no.
El finally bloque es opcional. Y, por cada try bloque, solo puede haber un finally bloquear.
La sintaxis básica de finally bloque es:
try {
//code
}
catch (ExceptionType1 e1) {
// catch block
}
finally {
// finally block always executes
}
Si ocurre una excepción, el finally el bloque se ejecuta después del try...catch bloquear. De lo contrario, se ejecuta después del bloque try. Para cada try bloque, solo puede haber un finally bloquear.
Ejemplo:Manejo de excepciones de Java usando el bloque finalmente
class Main {
public static void main(String[] args) {
try {
// code that generates exception
int divideByZero = 5 / 0;
}
catch (ArithmeticException e) {
System.out.println("ArithmeticException => " + e.getMessage());
}
finally {
System.out.println("This is the finally block");
}
}
} Salida
ArithmeticException => / by zero This is the finally block
En el ejemplo anterior, estamos dividiendo un número por 0 dentro del try bloquear. Aquí, este código genera un ArithmeticException .
La excepción es capturada por el catch bloquear. Y luego el finally se ejecuta el bloque.
Nota :Es una buena práctica usar el finally bloquear. Es porque puede incluir códigos de limpieza importantes como,
- código que podría omitirse accidentalmente al regresar, continuar o interrumpir
- cerrar un archivo o conexión
3. Java lanza y lanza palabra clave
Java throw La palabra clave se usa para lanzar explícitamente una única excepción.
Cuando throw una excepción, el flujo del programa se mueve desde el try bloque al catch bloquear.
Ejemplo:Manejo de excepciones usando Java throw
class Main {
public static void divideByZero() {
// throw an exception
throw new ArithmeticException("Trying to divide by 0");
}
public static void main(String[] args) {
divideByZero();
}
} Salida
Exception in thread "main" java.lang.ArithmeticException: Trying to divide by 0
at Main.divideByZero(Main.java:5)
at Main.main(Main.java:9)
En el ejemplo anterior, lanzamos explícitamente el ArithmeticException usando el throw palabra clave.
Del mismo modo, el throws La palabra clave se usa para declarar el tipo de excepciones que pueden ocurrir dentro del método. Se utiliza en la declaración del método.
Ejemplo:Java arroja una palabra clave
import java.io.*;
class Main {
// declareing the type of exception
public static void findFile() throws IOException {
// code that may generate IOException
File newFile = new File("test.txt");
FileInputStream stream = new FileInputStream(newFile);
}
public static void main(String[] args) {
try {
findFile();
}
catch (IOException e) {
System.out.println(e);
}
}
} Salida
java.io.FileNotFoundException: test.txt (The system cannot find the file specified)
Cuando ejecutamos este programa, si el archivo test.txt no existe, FileInputStream lanza un FileNotFoundException que extiende el IOException clase.
El findFile() especifica que un IOException se puede tirar El main() method llama a este método y maneja la excepción si se lanza.
Si un método no maneja excepciones, el tipo de excepciones que pueden ocurrir dentro de él debe especificarse en el throws cláusula.
Para obtener más información, visite Java throw and throws.
Java