¿Cómo implementar el bloque de excepción try catch con elegancia?

Fuente: blog de notas de estudio de Xiao Ming

Dirección: www.cnblogs.com/liruilong/p/13403963.html

En el proyecto, encontraremos manejo de excepciones. Para las excepciones en tiempo de ejecución, debemos juzgar y manejar nosotros mismos. Para la excepción marcada, debemos tomar la iniciativa para abordarla.

Pero el engorroso try {} catch está anidado en el código, y parece muy incómodo. Aquí no discutiremos el rendimiento, en lo que respecta al código, veamos cómo ocultarlo. El principio es el mismo. Se convierte en cómo escribir. Veamos cómo manejar correctamente los bloques de excepción.

antes de esto. Necesita conocer los siguientes conceptos:

  • Parametrización de comportamiento:

  • Es una idea de programación funcional propuesta por java8. Al envolver el código como un comportamiento de paso de parámetros, es decir, envolver la lógica del código como un parámetro y pasarlo al método, la nueva serie Java 8 de tutoriales de nuevas funciones se puede leer prestando atención a la pila de tecnología Java de la cuenta pública. .

  • Expresión lambda :

  • Java8 propone: Las expresiones lambda se entienden como una forma de expresar de manera concisa funciones anónimas pasables, no tiene nombre, pero tiene un cuerpo de función, una lista de parámetros y un tipo de retorno. Se puede lanzar un tipo de excepción. La lógica del código de empaquetado es el uso de expresiones Lambda para parámetros .

  • Interfaz funcional:

  • Esencialmente, es una interfaz ordinaria con un solo método abstracto, que se puede convertir implícitamente en una expresión Lambda , y debe definirse con anotaciones (@FunctionalInterface). Los métodos predeterminados y los métodos estáticos no necesitan ser métodos abstractos y se pueden definir en interfaces funcionales.

Si se definen además varios métodos abstractos en la interfaz funcional, las firmas de estos métodos abstractos deben ser las mismas que las de los métodos públicos de Object. La interfaz eventualmente tendrá una cierta implementación de clase, y la última clase principal de la clase es Object. Por lo tanto, las interfaces funcionales pueden definir métodos públicos de Object.

Este código no es ajeno a mis amigos. Esta es una excepción marcada y es necesario lanzar una ClassNotFoundException.

Escritura normal:

Bueno, veamos la implementación específica: es muy simple. Lo que tenemos que hacer es tratar `Class <?> Clazz = Class.forName (" nombre de clase ");` como un comportamiento, aceptar un String y obtener un Class, entonces tenemos que definir una interfaz funcional para describir este comportamiento.

Aquí, porque nuestro comportamiento necesita lanzar una excepción. Por lo que también se lanza una excepción en la interfaz. El mejor manejo de excepciones no se presenta aquí. Para obtener más detalles, lea estas " 10 mejores prácticas sobre el manejo de excepciones en la programación Java ".

Luego, necesitamos definir un método para pasar nuestro comportamiento como parámetro y, al mismo tiempo, capturar nuestra excepción.

Entonces, podemos llamar a nuestro método classFind método,

por supuesto. De hecho, este tipo de pensamiento no es sencillo para detectar excepciones.

Veamos un archivo de texto Demo-> convertido en una cadena:

En mi opinión, para convertir un archivo de texto en una cadena, necesitamos usar un flujo de alto nivel para envolver el flujo de bajo nivel y luego leerlo almacenando en caché. Aquí, inevitablemente encontraremos operaciones como el manejo de excepciones y el cierre del flujo. A continuación, haremos que estos códigos sean anormales. Solo concéntrate en escribir y leer lógica.

Mis pensamientos:

No estoy muy familiarizado con java IO, por favor deje un mensaje si tiene una buena manera de aprender unos de otros:

FileInputStream fileInputStream = new FileInputStream(file))

InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream))

BufferedReader bufferedReader = new BufferedReader(inputStreamReader))

String str = bufferedReader.readLine()

Secuencia de bytes: "Secuencia de caracteres" La secuencia de búfer de caracteres es convertir la secuencia de bytes en secuencia de caracteres y luego envolverla con secuencia avanzada.

Entonces, mi idea es evitar demasiados cierres de flujo de E / S y capturas de excepciones en la lógica, y concentrarme en procesar la lógica de lectura, combinando las siguientes dos tecnologías:

Para realizar una acción, cualquier expresión BufferReader -> String Lambda se puede pasar como parámetro. Siempre que se ajuste a la firma del método de proceso.

llevado a cabo

Vamos, estoy dispuesto a ser tratado con amabilidad por este mundo ^ _ ^

Recomiendo leer más en mi blog:

1. Una serie de tutoriales sobre Java JVM, colecciones, subprocesos múltiples y nuevas funciones.

2. Serie de tutoriales Spring MVC, Spring Boot, Spring Cloud

3. Tutorial de herramientas de la serie Maven, Git, Eclipse, Intellij IDEA

4. Las últimas preguntas de la entrevista de los principales fabricantes, como Java, back-end, arquitectura y Alibaba.

¡Siéntete bien, no te olvides de dar me gusta + reenviar!

Finalmente, preste atención a la cuenta oficial de WeChat del líder de la pila: pila de tecnología Java, responda: Bienestar, puede obtener una copia gratuita de las últimas preguntas de la entrevista de Java que he compilado para 2020. Es realmente completo (incluidas las respuestas), sin ninguna rutina.

Supongo que te gusta

Origin blog.csdn.net/youanyyou/article/details/108341233
Recomendado
Clasificación