Junior
¿Cómo lanzar excepciones correctamente en Java?
sobes.tech AI
Respuesta de la IA
Las excepciones deben lanzarse cuando ocurre una situación anormal que interrumpe la ejecución normal del programa y requiere una atención inmediata.
Principios básicos:
- Utilice excepciones para informar sobre errores, no para controlar el flujo de ejecución.
- Elija el tipo de excepción más adecuado de la biblioteca estándar.
- Cree sus propias clases de excepciones cuando las estándar no proporcionen suficiente información.
- Incluya en el mensaje de la excepción detalles sobre la causa del error, incluido el contexto.
- No capture excepciones que no pueda manejar correctamente. Es mejor propagarlas hacia arriba en la pila de llamadas.
- Use bloques
try-with-resourcespara cerrar recursos automáticamente. - Registre las excepciones que maneje o propague a un nivel superior.
Sintaxis correcta: throw new MyException("Mensaje de error");
Ejemplo:
// Creación de una excepción personalizada
public class InvalidParameterException extends Exception {
public InvalidParameterException(String message) {
super(message);
}
}
// Método que lanza una excepción
public int divide(int a, int b) throws InvalidParameterException {
if (b == 0) {
throw new InvalidParameterException("División por cero no permitida");
}
return a / b;
}
// Uso del método y manejo de la excepción
public void performDivision(int x, int y) {
try {
int result = divide(x, y);
System.out.println("Resultado: " + result);
} catch (InvalidParameterException e) {
// Registro del error
System.err.println("Error en la división: " + e.getMessage());
// Posible manejo adicional o propagación
}
}
Diferencias entre excepciones Checked y Unchecked:
| Tipo de excepción | Hereda de | Requiere manejo/declaración | Ejemplo |
|---|---|---|---|
| Checked | Exception (excepto RuntimeException) |
Sí (try-catch o throws) |
IOException, SQLException |
| Unchecked | RuntimeException |
No (el compilador no requiere) | NullPointerException, ArrayIndexOutOfBoundsException |