Las excepciones marcadas son una herramienta poderosa en Java, ya que obligan al programador a manejar condiciones excepcionales, lo que aumenta la confiabilidad del código. Sin embargo, el uso excesivo puede dificultar el uso de las API. Para que una excepción marcada esté justificada, la situación debe ser verdaderamente excepcional y capaz de realizar acciones útiles por parte del programador. De lo contrario, una excepción no marcada puede ser más apropiada.
Java 8 trajo un desafío adicional al uso de excepciones comprobadas, ya que los métodos que las generan no se pueden usar directamente en las secuencias, lo que requiere un manejo adicional en el código. Para evitar esta complejidad, se pueden considerar alternativas, como devolver un objeto Opcional en lugar de lanzar una excepción verificable, o dividir el método en dos, uno que verifica la posibilidad de un error y otro que realiza la operación.
Las excepciones marcadas deben usarse con moderación: si la recuperación no es posible, use excepciones no marcadas. Cuando la recuperación sea factible, considere Opcional para la devolución. Si esto no proporciona suficiente información, entonces puede estar justificada una excepción marcada.
Más:
A continuación se muestran algunos ejemplos para ilustrar el uso adecuado de excepciones marcadas y alternativas como Opcional y el uso de métodos de verificación.
Usar excepciones marcadas con moderación
Digamos que tenemos un método que carga datos de un archivo. Si no se encuentra el archivo, queremos lanzar una excepción para notificar a la persona que llama sobre el problema. En este caso, una excepción marcada es apropiada porque el desarrollador puede tomar medidas para resolver el problema (como proporcionar la ruta de archivo correcta).
public class FileLoader { public String loadFile(String filePath) throws FileNotFoundException { File file = new File(filePath); if (!file.exists()) { throw new FileNotFoundException("Arquivo não encontrado: " filePath); } // Código para carregar o arquivo return "Conteúdo do arquivo"; } }
Aquí, la persona que llama debe manejar la excepción FileNotFoundException, ya que puede solucionar el problema proporcionando una ruta correcta al archivo.
Uso de excepciones opcionales en lugar de marcadas
Si el archivo que falta es una condición que no debería interrumpir la ejecución normal, podemos usar Opcional para indicar que el resultado puede faltar sin generar una excepción. Esto hace que la API sea más fluida para los casos en los que se puede tolerar una ausencia de valor.
import java.util.Optional; public class FileLoader { public OptionalloadFile(String filePath) { File file = new File(filePath); if (!file.exists()) { return Optional.empty(); } // Código para carregar o arquivo return Optional.of("Conteúdo do arquivo"); } }
En el código de la persona que llama:
FileLoader loader = new FileLoader(); Optionalcontent = loader.loadFile("caminho/para/arquivo.txt"); content.ifPresentOrElse( System.out::println, () -> System.out.println("Arquivo não encontrado.") );
En este ejemplo, la persona que llama no necesita manejar excepciones y Opcional le permite manejar más fácilmente el contenido faltante.
Dividiendo el método en dos: verificación y acción
En algunos casos podemos dividir el método en dos: uno que verifica la condición y otro que realiza la acción. Esto permite a la persona que llama manejar la condición excepcional antes de llamar al método principal, lo que hace que la API sea más flexible.
public class FileLoader { // Verifica se o arquivo está disponível public boolean isFileAvailable(String filePath) { File file = new File(filePath); return file.exists(); } // Carrega o conteúdo do arquivo public String loadFile(String filePath) { if (!isFileAvailable(filePath)) { throw new IllegalStateException("Arquivo não encontrado: " filePath); } // Código para carregar o arquivo return "Conteúdo do arquivo"; } }
En el código de la persona que llama:
FileLoader loader = new FileLoader(); String filePath = "caminho/para/arquivo.txt"; if (loader.isFileAvailable(filePath)) { String content = loader.loadFile(filePath); System.out.println(content); } else { System.out.println("Arquivo não encontrado."); }
Aquí usamos IllegalStateException, una excepción no verificada, en el caso en que la persona que llama intenta cargar el archivo sin verificar primero si está disponible.
Resumen
Excepción marcada: se usa para condiciones que la persona que llama puede corregir directamente, como FileNotFoundException para archivos.
Opcional: Úselo cuando la ausencia de un valor no deba interrumpir el flujo del programa.
División de métodos: métodos de verificación y ejecución separados cuando el error se puede predecir y evitar, lo que hace que la API sea más flexible y sencilla de usar.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3