Los pros y los contras del manejo de excepciones en la programación Java
Palabras clave: Notificación de excepción (lanzamientos) throw try catch RuntimeException Excepción no marcada (sin marcar) Excepción marcada (marcada) El manejo de excepciones en la programación Java es un tema muy común en casi cualquier curso introductorio. El manejo de excepciones se mencionará en todos Cursos de Java, pero creo que muchas personas en realidad no dominan los métodos y estrategias para manejar correctamente las excepciones. A lo sumo, solo tienen una comprensión aproximada de los conceptos. Este artículo discutirá tres niveles y cualidades diferentes del manejo de excepciones de Java. Los métodos discutidos para manejar excepciones se dividen en tres categorías: bueno, malo y malo.
Al mismo tiempo, le proporcionamos algunas técnicas para resolver estos problemas. Primero, explicamos algunos de ellos. Las definiciones y mecanismos que deben comprenderse en el manejo de excepciones de Java. La especificación del lenguaje Java llama a cualquier excepción derivada de la clase Error o la clase RuntimeException una excepción no verificada. Todas las demás excepciones se denominan excepciones verificadas. excepciones que debemos manejar nosotros mismos En cuanto a los medios de manejo, debemos controlarlas (intentar capturar) o notificarlas (lanzar) que puedan ocurrir. Por lo general, debemos detectar excepciones que sabemos cómo manejar y notificar esas excepciones. que no sabemos cómo manejar. Esas excepciones no comprobadas están fuera de nuestro control (Error) o son situaciones que no deberíamos permitir en primer lugar (RuntimeException). En cuanto a las reglas para especificar excepciones, las reglas de Java son muy simples. Un método debe notificarse a sí mismo de todas las excepciones verificables que puedan generarse. Excepción Al escribir su propio método, no es necesario notificar todos los objetos de excepción que el método realmente pueda generar si desea comprender cuándo es la cláusula de lanzamiento del método. Es necesario notificar la excepción, debe saber que para una excepción, solo puede estar en las siguientes cuatro situaciones. Esta situación ocurrirá. Se llama a un método que puede generar una excepción, como el método readLine de la clase BufferedReader. Este método notifica java io IOException. Detecta un error y genera una excepción usando la declaración throw. Se produce un error de programación, como por ejemplo a[ ] = . Java genera un error interno Si ocurre una de las dos primeras situaciones, debe informarle a la persona que pretende usar su método. Si el uso de este método puede causar una excepción (es decir, usar throws en el encabezado del método), se producirá un error. Se debe notificar al método de memoria simple siempre que contenga throws. Si un método debe manejar múltiples excepciones al mismo tiempo, debe indicar todas las excepciones en el encabezado, separándolas con comas como se muestra en el siguiente ejemplo
class Animation { public Image loadImage(Strint s) throws EOFException MalformedURLException { ………… } }
Sin embargo, no necesitamos notificar errores internos de Java ni deberíamos hacerlo. notificar excepciones derivadas de RuntimeException. Buen manejo de excepciones. Un buen manejo de excepciones proporciona controladores. Mecanismo de error unificado. De hecho, el lenguaje Java ha mejorado significativamente las capacidades de manejo de excepciones en el desarrollo de software al proporcionar advertencias de excepciones a la persona que llama. Este método expande y mejora los métodos en el. Lenguaje Java para incluir condiciones de error propias. Veamos un ejemplo. Este ejemplo ilustra esta situación. Aquí está el prototipo de uno de los constructores FileInputStream públicos. FileInputStream (nombre de cadena) lanza FileNotFoundException. puede lanzar cuando se llama. La palabra clave utilizada para la excepción es throws. Este mensaje de excepción que aparece en el prototipo del método aumenta la confiabilidad de la programación.
Solicita a la persona que llama el método de posibles condiciones de excepción para que pueda manejar estas excepciones de manera adecuada. El siguiente código muestra cómo detectamos y manejamos la excepción FileNotFoundException
try { FileInputStream fis. = new FileInputStream(args[ ]); // otro código aquí } catch (FileNotFoundException fnfe) { Sistema fuera println( Archivo: + args[ ] + no encontrado Abortando Salida del sistema() ); El manejo de excepciones de Java, que son excepciones marcadas, excepciones definidas por el usuario y la nueva API de registro de Java introducida en el JDK. Todas las subclases de java lang Exception son excepciones marcadas) es una excepción que debe ser solicitada por el método que lanza. la excepción. Esta excepción debe ser detectada o avisada a la persona que llama. Las excepciones definidas por el usuario (excepciones definidas por el usuario) son clases de excepción personalizadas. Esta clase de excepción extiende el excelente lenguaje Java. Se requieren programas Java para personalizar excepciones, encapsular informes y manejar. Sus propias situaciones únicas La última API de registro de Java puede registrar excepciones de forma centralizada. Manejo incorrecto de excepciones de Java. El lado malo del manejo de excepciones de Java incluye dos situaciones: el abuso de excepciones no verificadas. Ambos métodos, como el abuso del constructor general, complican. El problema. Hay un tipo de excepción que pertenece a una subclase de RuntimeException. Esta excepción no es verificada por el compilador. Por ejemplo, NullPointerException y ArrayStoreException son ejemplos de este tipo de excepciones. Los programadores pueden subclasificarse para eludir las restricciones de. excepciones marcadas para que los métodos que generan estas excepciones puedan ser utilizados por sus llamadores. Los equipos de desarrollo profesionales solo deberían permitir esto en casos raros. El segundo mal hábito de manejo de excepciones es el constructor general. El llamado constructor general es un método de captura de excepciones. módulo de código que puede manejar todas las posibles excepciones que se le presenten. El siguiente es un ejemplo del procesador general.
Tengo que admitir que estoy escribiendo un programa general. Esta técnica se ha utilizado antes, pero al escribir. En programas críticos, este tipo de constructor debe evitarse a menos que estén autorizados para usarse junto con un controlador de errores central. De lo contrario, el constructor general no es más que un mecanismo para acelerar la programación evitando el manejo de errores. es la dificultad de emplear buenas estrategias de manejo de errores para recuperarse de estados de memoria de baja capacidad. Las excepciones como errores de escritura y errores de algoritmo no se resuelven fácilmente. Puede probar técnicas comunes como la recolección cíclica de basura y recordar a los usuarios que solucionen los problemas anteriores. Muchas características de Java y sus API son similares al mecanismo de manejo de excepciones de Java, y también hay algunos errores divertidos que se deben cometer. Por ejemplo, para lanzar una excepción, no existe tal cosa. la nueva palabra clave para asignarle memoria es un ejemplo de esto. No sé cuántas veces he cometido este error y repetidamente me he estrellado frente a compiladores serios. En este caso, en realidad estamos sirviendo el lenguaje. En lugar de dejar que el lenguaje funcione para nosotros, los OutOfMemoryErrors que encontramos son defectos en el manejo de excepciones. Este proceso utiliza el módulo finalmente para cerrar las excepciones de análisis de archivos para obtener el método y la línea de código donde ocurrió el problema. debe detectarse, ¡pero esta excepción no es una excepción marcada! Piénselo, quedarse sin memoria es una situación bastante común en cualquier
Los programas que están estrechamente relacionados con el estado de uso de la memoria deberían detectar y manejar este error. Algunas sugerencias al usar excepciones. El control de excepciones no está diseñado para reemplazar algunas pruebas simples. ¡Utilice excepciones solo en situaciones anormales! . No refine demasiado las excepciones. No agregue manejo de excepciones a cada declaración. Es mejor colocar toda la tarea en un bloque de prueba. Si una de las operaciones falla, puede abandonar la tarea inmediatamente. No suprima las excepciones. Para los métodos que necesitan notificar excepciones, podemos usar el método de captura para cerrar la excepción por la fuerza. Si ocurre una excepción, la excepción se ignorará silenciosamente si cree que la excepción generada será muy importante. , debes dedicarle más esfuerzo. Realizar un control correcto. No importa pasar excepciones. Si el método llamado generará excepciones, como el método readLine, son inherentemente capaces de detectar las excepciones que puedan generar. En este caso, un mejor enfoque es pasar estas excepciones en lugar de detectarlas usted mismo. lishixinzhi /Article/program/Java/hx/201311/26508