La diferencia entre excepción y error en las preguntas de la entrevista de Android

¿Se ejecutará finalmente el código? Hay retorno en el intento, ¿finalmente todavía se ejecuta?

¿Qué está tratando de investigar esta pregunta?

Comprensión profunda del lenguaje Java para evitar escribir código "problemático" durante el desarrollo

Puntos de conocimiento de inspección

Proceso de ejecución de JVM

¿Cómo deben responder los candidatos?

La descripción de finalmente en la documentación oficial de Java es la siguiente:

The `finally` block *always* executes when the `try` block exits.

El significado general es: el contenido en el bloque de código finalmente se ejecutará definitivamente.

También hay una declaración clara en la especificación JVM

If the try clause executes a return, the compiled code does the following:

1. Saves the return value (if any) in a local variable.
2. Executes a jsr to the code for the finally clause.
3. Upon return from the finally clause, returns the value saved in the local variable.

Significa que si hay un retorno en el intento, el valor de retorno en el intento se almacenará en la tabla de variables locales del marco de la pila, luego se ejecutará el bloque de instrucciones finalmente y, finalmente, el valor de retorno se recuperará del tabla de variables locales y devuelta. Además, cuando hay un retorno tanto en try como en finalmente, se ignorará el retorno de try y se utilizará el retorno de finalmente.

Caso especial

En circunstancias normales, el código en finalmente se ejecutará definitivamente, pero si configuramos el subproceso que ejecuta el bloque de código try-catch-finally como un subproceso daemon, o llamamos para finalizar la máquina virtual actual antes de finalmente, finalmente no se System.exit ejecutará :

try{
    
    
	System.exit(0);
}catch (Exception e){
    
    

}finally {
    
    
	
}

Thread t1 = new Thread(){
    
    
    @Override
    public void run(){
    
    
        //try-catch-finally
    }
};
t1.setDaemon(true);//设置为守护进程
t1.start();

2.8 En el mecanismo de excepción de Java, la diferencia entre excepción Excepción y error Error

¿Qué está tratando de investigar esta pregunta?

Cuando necesite personalizar excepciones durante el desarrollo, ¿debería elegir definir Excption o Error? ¿Qué representa el código escrito que activa Excption o Error?

Puntos de conocimiento de inspección

mecanismo de excepción de Java

¿Cómo deben responder los candidatos?

ThrowableHay una clase arrojable en Java Throwablecon dos subclases importantes, una es Error y la otra es Excepción.

[Falló la transferencia de la imagen del enlace externo, el sitio de origen puede tener un mecanismo anti-leeching, se recomienda guardar la imagen y subirla directamente (img-oCdRO3Fe-1686365970528)(images\abnormal.png)]

ErrorEs un error que el programa no puede manejar, lo que indica un problema grave en el programa. Por ejemplo, error de ejecución de la máquina virtual Java (Virtual MachineError), cuando la JVM ya no tiene los recursos de memoria necesarios para continuar con la operación, aparecerá OutOfMemoryError y así sucesivamente. Cuando ocurren estos errores, la JVM generalmente optará por terminar el subproceso. Estos errores no se pueden verificar, están fuera del control y las capacidades de procesamiento del programa, y ​​la mayoría de ellos no pueden ocurrir cuando el programa se está ejecutando.

ExceptionEs una excepción que el programa puede manejar. Y Exception se divide en excepción de tiempo de ejecución (RuntimeException) y excepción que no es de tiempo de ejecución.

  • Operación anormal

    Excepciones de tiempo de ejecución, también conocidas como excepciones no comprobadas . El llamado no marcado significa que Java no nos dirá que hay una excepción al compilar y verificar, y debe exponerse en tiempo de ejecución, como subíndice fuera de los límites, excepción de puntero nulo, etc.

  • excepción que no es de tiempo de ejecución

    Las excepciones que no sean RuntimeException se conocen colectivamente como excepciones que no de tiempo de ejecución , como IOException y SQLException, que son excepciones que deben manejarse ( verificar excepciones ). Si no se manejan (lanzar a la capa superior o intentar capturar), El programa no se puede compilar.

¡Se pueden obtener explicaciones más detalladas de las preguntas de la entrevista de forma gratuita escaneando el código QR!

Supongo que te gusta

Origin blog.csdn.net/Misdirection_XG/article/details/131139642
Recomendado
Clasificación