Una breve charla sobre el manejo de excepciones en Java

Una breve charla sobre el manejo de excepciones en Java


1. Introducción a la excepción

Una excepción es un evento inesperado que ocurre cuando el programa se está ejecutando. Impide que el programa se ejecute normalmente de acuerdo con las expectativas del programador. Esta es una excepción. Cuando ocurre una excepción, se deja que el programa se las arregle solo y se cierre y finalice inmediatamente. En Java, es decir, errores que ocurren durante la compilación, ejecución o ejecución de Java.

El mecanismo de manejo de excepciones de Java permite que el programa maneje la excepción de acuerdo con la lógica de manejo de excepciones preestablecida del código cuando ocurre una excepción, de modo que el programa pueda volver a la normalidad y continuar la ejecución tanto como sea posible, y mantener el código limpio.

Las excepciones en Java se pueden generar cuando se ejecuta la instrucción en la función, o el programador las lanza manualmente a través de la instrucción throw. Siempre que se genere una excepción en el programa Java, se utilizará un objeto de excepción del tipo correspondiente para encapsular La excepción El JRE intentará encontrar un manejador de excepciones para manejar la excepción.


2. Clasificación de anomalías

La interfaz raíz de la excepción, Throwable , tiene dos subinterfaces , Error y Exception.

  • Error representa errores a nivel del sistema y excepciones con los que el programa no tiene que lidiar. Es un problema serio cuando la recuperación no es imposible pero difícil, por
    ejemplo: desbordamiento de memoria, es imposible esperar que el programa maneje tal situación;
  • Exception representa una excepción que necesita ser detectada o procesada por el programa, es un problema de diseño o implementación, es decir, representa una situación que nunca sucederá si el programa se ejecuta normalmente.
    • RuntimeException es una subclase de Exception, y depende del usuario elegir si desea manejarla.

Inserte la descripción de la imagen aquí
Excepciones comunes:

  • Excepción de entrada y salida: IOException
  • Clase de excepción aritmética: ArithmeticExecption
  • Clase de excepción de puntero nulo: NullPointerException
  • Excepción de conversión de tipos: ClassCastException
  • Excepción de la base de datos de operación: SQLException
  • Excepción de archivo no encontrado: FileNotFoundException
  • Excepción de subíndice negativo de matriz: NegativeArrayException
  • Excepción fuera de límites de subíndice de matriz: ArrayIndexOutOfBoundsException
  • Violación de la excepción del principio de seguridad: SecturityException
  • Excepción de archivo finalizado: EOFException
  • Conversión de cadena a excepción numérica: NumberFormatException
  • Excepción de método no encontrado: NoSuchMethodException

3. Manejo de excepciones

Java utiliza un enfoque orientado a objetos para manejar excepciones, clasifica varias excepciones y proporciona una buena interfaz. En Java, cada excepción es un objeto, que es una instancia de la clase Throwable o sus subclases. Cuando ocurre una excepción en un método, se lanza un objeto de excepción. El objeto contiene información de excepción. El método que llama a este objeto puede detectar la excepción y manejarla.

Palabras clave: lanzar, lanzar, intentar, atrapar, finalmente
Inserte la descripción de la imagen aquí
. En circunstancias normales, se usa try para ejecutar un programa. Si el sistema lanza un objeto de excepción, puede ser capturado por su tipo, o por el total. Es para ejecutar el código. bloquear (finalmente) para procesar;

  • try se utiliza para especificar un programa para evitar todas las excepciones;
  • La cláusula catch sigue inmediatamente al bloque try para especificar el tipo de excepción que desea capturar;
  • La sentencia throw se usa para lanzar explícitamente una excepción;
  • throws se usa para declarar varias excepciones que puede generar un método;
  • Finalmente, para asegurar que un fragmento de código se ejecutará sin importar qué situación anormal ocurra;

Las sentencias Try se pueden anidar. Siempre que se encuentre una sentencia try, la estructura de la excepción se colocará en la pila de excepciones hasta que se completen todas las sentencias try (se realizan dos juicios durante el proceso de captura de excepciones, el primero es try Si hay un excepción en el bloque de programa, la segunda es si la excepción generada es la misma que la excepción que desea capturar en los corchetes catch ()). Si la declaración try del siguiente nivel no maneja una determinada excepción, la pila de excepciones realizará una operación emergente hasta que encuentre una declaración try que maneje esta excepción o finalmente lance la excepción a la JVM.

Los formatos de manejo de excepciones se pueden dividir en tres categorías

  • trata de atraparlo{ }
  • prueba {} —— captura {} —— finalmente {}
  • prueba {} —— finalmente {}

Ejemplo:

	try{
    
    
		return;
	}catch(){
    
    
	
	}finally{
    
    
	
	}
	return;

A través de la breve frase anterior, analizaremos el orden de ejecución de esta sentencia. De acuerdo con el orden de ejecución del programa, el segmento de código ingresa primero a la instrucción try y, dado que no se lanza ninguna excepción, el código guarda el contenido que se devolverá en la memoria y luego se ejecuta finalmente. Debido a que no hay contenido ejecutable en el finalmente, vuelve al intento de ejecutar el retorno, finaliza la ejecución del segmento de código, y el retorno posterior finalmente no se ejecutará.

  1. Independientemente de si hay una excepción, se ejecutará el código en el bloque finalmente;
  2. Cuando hay un retorno en try and catch, finalmente aún se ejecutará;
  3. Finalmente se ejecuta después de la operación de expresión después del retorno (el valor después de la operación no se devuelve en este momento, pero el valor a devolver se guarda primero, independientemente del código en el finalmente, el valor devuelto no cambiará. el valor guardado antes), por lo que el valor de retorno de la función se determina antes de la ejecución final;
  4. Es mejor no incluir el retorno finalmente, de lo contrario, el programa saldrá antes y el valor de retorno no es el valor de retorno guardado en try o catch.

Excepciones en tiempo de ejecución y excepciones comprobadas

  • Las excepciones en tiempo de ejecución representan excepciones que se pueden encontrar en el funcionamiento normal de la máquina virtual, es un error operativo común y generalmente no ocurre mientras el programa esté diseñado sin problemas.

  • La excepción marcada está relacionada con el contexto en el que se ejecuta el programa.Incluso si el diseño del programa es correcto, aún puede deberse a problemas de uso. El compilador de Java requiere que el método declare que lanza excepciones comprobadas que pueden ocurrir, pero no requiere que declare que lanza excepciones de tiempo de ejecución no detectadas.

Las excepciones, como la herencia, a menudo se abusa en la programación orientada a objetos. Se dan las siguientes pautas para el uso de excepciones en Effective Java:

  • No utilice el manejo de excepciones para el flujo de control normal (una API bien diseñada no debería obligar a quienes llaman a usar excepciones para el flujo de control normal)
  • Utilice excepciones marcadas para condiciones recuperables y excepciones en tiempo de ejecución para errores de programación
  • Evite el uso innecesario de excepciones marcadas (se pueden usar algunos métodos de detección de estado para evitar excepciones)
  • Priorizar excepciones estándar
  • Las excepciones lanzadas por cada método deben estar documentadas.
  • Mantenga la atomicidad anómala
  • No ignore la excepción detectada en catch

Supongo que te gusta

Origin blog.csdn.net/baidu_41847368/article/details/114884028
Recomendado
Clasificación