Las 30 principales preguntas y respuestas de entrevistas sobre manejo de excepciones [para principiantes y experimentados]

Publicado: 2020-09-29

El manejo de excepciones es un concepto que se implementa en algoritmos para manejar posibles errores de tiempo de ejecución, que pueden interrumpir el flujo normal de un programa. Algunos de los errores que se pueden manejar usando este concepto son:

  • ClassNotFoundException
  • IOException
  • SQLException
  • RemoteException
  • Excepción en tiempo de ejecución:
    • excepción aritmética
    • Excepción de puntero nulo
    • NumberFormatException
    • IndexOutOfBoundsExceptionIndexOutOfBoundsException
      • ArrayIndexOutOfBoundsExceptionArrayIndexOutOfBoundsException
      • StringIndexOutOfBoundsException

El mérito de esta implementación es evitar que el programa se cuelgue si hay una excepción mientras se ejecuta el programa. Sin el manejo de excepciones, el programa generará un error cuando encuentre una excepción y el resto del programa no se ejecutará. Sin embargo, la implementación de este concepto dará una solución en la que el resto del programa se ejecuta si son independientes con respecto a la excepción en la que se incurre. Para obtener más información, consulte nuestros cursos de ciencia de datos.

Leer: Debe leer 30 preguntas y respuestas de la entrevista de Selenium: Guía definitiva

Preguntas y respuestas de la entrevista sobre el manejo de excepciones

1. ¿Qué quiere decir con una excepción?

Es una condición anormal que a veces se encuentra cuando se ejecuta un programa. Interrumpe el flujo normal del programa. Es necesario manejar esta excepción; de lo contrario, puede hacer que el programa finalice abruptamente.

2. Explique cómo se pueden manejar las excepciones en Java. ¿Cuál es el mecanismo de manejo de excepciones detrás del proceso?

Hay tres partes en el mecanismo de manejo de excepciones. Estos se llaman:

  • Bloque de prueba: la sección del código que primero se intenta ejecutar y monitorear para detectar cualquier excepción que pueda ocurrir.
  • Bloque de captura: si el bloque 'intentar' lanza alguna excepción, esta sección de código la captura.
  • Bloque final: el código de esta sección siempre se ejecuta independientemente de las excepciones detectadas en el bloque 'intentar', si las hay. Incluso si no hay excepción, se ejecutará el código debajo de este bloque.

3. ¿Es posible mantener otras declaraciones entre los bloques 'intentar', 'atrapar' y 'finalmente'?

No se recomienda incluir declaraciones entre las secciones de bloques 'try', 'catch' y 'finally', ya que forman una unidad completa del mecanismo de manejo de excepciones.

tratar

{

//Código que se supervisa en busca de excepciones.

}

//No puedes guardar declaraciones aquí

catch (excepción ex)

{

//Captura las excepciones lanzadas por el bloque try, si las hay.

}

//No puedes guardar declaraciones aquí

finalmente

{

//Este bloque siempre se ejecuta independientemente de las excepciones.

}

4. ¿Será posible incluir solo un bloque 'intentar' sin los bloques 'atrapar' y 'finalmente'?

Esto daría un error de compilación. Es necesario que el bloque 'intentar' sea seguido por un bloque 'atrapar' o un bloque 'finalmente', si no ambos. Se necesita uno de los bloques 'catch' o 'finally' para que el flujo de manejo de excepciones no se interrumpa.

5. ¿Será posible mantener las declaraciones después del bloque 'finally' si el control regresa desde el bloque "finally"?

Esto dará como resultado un error de bloque catch inalcanzable. Esto se debe a que el control regresará desde el propio bloque 'finally'. El compilador no podrá ejecutar el código después de la línea con la excepción. Es por eso que la ejecución mostrará un error de código inalcanzable.

¿Sueñas con estudiar en el extranjero? Aquí está el programa adecuado para usted

6. Explique un error de bloque catch inalcanzable.

En el caso de varios bloques catch, el orden en que se colocan los bloques catch es desde el más específico hasta el más general. Es decir, las subclases de una excepción deben ir primero, y luego seguirán las superclases. En caso de que las superclases se mantengan primero, seguidas de las subclases después, el compilador mostrará un error de bloque de captura inalcanzable.

manejo de excepciones de clase pública

{

public static void main(String[] args)

{

tratar

{

int i = Integer.parseInt(“prueba”);

//Esta instrucción generará una excepción NumberFormatException //porque la entrada dada es una cadena, mientras que el //formato especificado es un entero.

}

catch (excepción ex)

{

System.out.println(“Este bloque maneja todos los tipos de excepción”);

//Todo tipo de excepciones se pueden manejar en este bloque //ya que es una superclase de excepciones.

}

catch(NumberFormatException ex)

{

//Esto dará un error de tiempo de compilación

//Este bloque se volverá inalcanzable como el

//la excepción ya estaría capturada por el //bloque de captura anterior

}

}

}

7. Considere tres sentencias en un bloque 'intentar': sentencia1, sentencia2 y sentencia3. Le sigue un bloque 'catch' para capturar las excepciones que ocurrieron durante la ejecución del bloque 'try'. Suponga que la excepción se lanza en la declaración2. ¿Crees que se ejecutará la declaración3?

La instrucción 3 no se ejecutará. Si el bloque 'try' lanza una excepción en cualquier punto, el código restante después de la excepción no se ejecutará. En cambio, el control de flujo llegará directamente al bloque 'capturar'.

8. Diferenciar error y excepción en Java.

La diferencia clave entre error y excepción es que, si bien el error es causado por el entorno en el que se ejecuta la JVM (Java Virtual Machine), las excepciones son causadas por el propio programa. Por ejemplo, OutOfMemory es un error que ocurre cuando la JVM agota su memoria.

Pero NullPointerException es una excepción que se encuentra cuando el programa intenta acceder a un objeto nulo. No es posible recuperarse de un error. Por lo tanto, la única solución a un error es terminar la ejecución. Sin embargo, es posible solucionar las excepciones utilizando bloques de prueba y captura o devolviendo excepciones a la función de llamada.

Debe leer: Preguntas y respuestas de la entrevista de Java

9. ¿Cuáles son los tipos de excepciones? Explicarlos.

Hay dos tipos de excepciones:

Excepciones marcadas

El tipo de excepciones que son conocidas y reconocidas por el compilador. Estas excepciones solo se pueden verificar en tiempo de compilación. Por lo tanto, también se denominan excepciones de tiempo de compilación. Estos pueden manejarse usando bloques try and catch o usando una cláusula throw. Si estas excepciones no se manejan adecuadamente, producirán errores de tiempo de compilación. Los ejemplos incluyen las subclases de java.lang.Exception excepto RunTimeException.

Excepciones no verificadas

El tipo de excepciones que no reconoce el compilador. Ocurren solo en tiempo de ejecución. Por lo tanto, también se denominan excepciones de tiempo de ejecución. No se comprueban en tiempo de compilación. Por lo tanto, incluso después de una compilación exitosa, pueden hacer que el programa finalice prematuramente si no se manejan adecuadamente. Los ejemplos incluyen las subclases de java.lang.RunTimeException y java.lang.Error.

10. ¿Cuál es la jerarquía de excepciones en Java?

java.lang.Throwable es una superclase de todos los errores y excepciones en Java. Esta clase amplía la clase java.lang.Object. El argumento del bloque catch debe ser solo su tipo o su tipo de subclase. La clase Throwable incluye dos subclases:

  1. java.lang.Error: esta es una superclase para todos los tipos de error en Java. Los errores comunes incluidos en esto son:
    1. java.lang.VirtualMachineError: Debajo de esto –
      1. StackOverFlowError
      2. Error de memoria insuficiente
    2. java.lang.AssertionError
    3. java.lang.LinkageError: Debajo de esto –
      1. No Error Clase Def Encontrado
      2. Error de cambio de clase incompatible
  2. java.lang.Exception: esta es una superclase de todos los tipos de excepción en Java. Las excepciones comunes bajo esto son:
    1. Excepción en tiempo de ejecución
      1. excepción aritmética
      2. NumberFormatException
      3. Excepción de puntero nulo
      4. ArrayIndexOutOfBoundsExceptionArrayIndexOutOfBoundsException
      5. ClassCastException
    2. java.lang.InterruptedException
    3. java.lang.IOException
    4. java.lang.SQLException
    5. java.lang.ParseException

11. ¿Qué son las excepciones de tiempo de ejecución en Java? Dé algunos ejemplos.

Las excepciones que ocurren en tiempo de ejecución se denominan excepciones de tiempo de ejecución. El compilador no puede reconocer estas excepciones, como las excepciones no verificadas. Incluye todas las subclases de java.lang.RunTimeException y java.lang.Error. Los ejemplos incluyen NumberFormatException, NullPointerException, ClassCastException, ArrayIndexOutOfBoundException, StackOverflowError, etc.

12. Defina OutOfMemoryError en Java.

Es la subclase de java.lang.Error que se encuentra cuando la JVM se queda sin memoria.

13. Diferenciar entre NoClassDefFoundError y ClassNotFoundException en Java.

Tanto NoClassDefFoundError como ClassNotFoundException ocurren cuando una clase particular no se encuentra en tiempo de ejecución. Sin embargo, ocurren bajo diferentes escenarios. NoClassDefFoundError es cuando ocurre un error porque una clase en particular estaba presente en el tiempo de compilación pero faltaba en el tiempo de ejecución. ClassNotFoundException ocurre cuando se encuentra una excepción para una aplicación que intenta cargar una clase en tiempo de ejecución que no está actualizada en el classpath.

14. ¿Se ejecuta el bloque 'finally' si cualquiera de los bloques 'try' o 'catch' devuelve el control?

El bloque 'finally' siempre se ejecuta independientemente de si los bloques try o catch devuelven el control o no.

15. ¿Es posible lanzar una excepción manualmente? En caso afirmativo, explique cómo.

Es posible lanzar una excepción manualmente. Se hace usando la palabra clave 'lanzar'. La sintaxis para lanzar una excepción manualmente es

lanzar instancia de tipo desechable;

Aquí hay un ejemplo del uso de la palabra clave 'lanzar' para lanzar una excepción manualmente.

tratar

{

NumberFormatException ex = new NumberFormatException(); //Aquí creamos un objeto para NumberFormatException explícitamente

tirar ex; // lanzar el objeto NumberFormatException explícitamente usando la palabra clave throw

}

catch(NumberFormatException ex)

{

System.out.println(“En este bloque, se puede capturar el objeto NumberFormatException arrojado explícitamente.”);

}

Leer: Las 35 principales preguntas y respuestas de la entrevista de primavera: Guía definitiva

16. ¿Qué quiere decir con volver a lanzar una excepción en Java?

Las excepciones que se generan en el bloque 'try' se manejan en el bloque 'catch'. Si el bloque 'catch' no puede manejar esa excepción, es posible que pueda volver a lanzar la misma excepción usando la palabra clave 'throw'. Este mecanismo se llama volver a lanzar una excepción. La implementación es la siguiente:

tratar

{

Cadena s = nulo;

System.out.println(s.longitud()); //Esta declaración lanza una NullPointerException

}

catch(NullPointerException ex)

{

System.out.println(“Aquí se detecta la NullPointerException”);

tirar ex; //Volviendo a lanzar la NullPointerException

}

17. ¿Por qué usa la palabra clave 'throws' en Java?

Si es posible que un método arroje una excepción si no se pudo manejar, debe especificar esa excepción usando la palabra clave 'throws'. Será útil para las funciones de llamada de ese método en el manejo de esa excepción. La sintaxis para usar la palabra clave 'throws' es,

return_type method_name(parameter_list) arroja lista_excepciones

{

//código

}

Aquí, lista_excepciones es la lista de excepciones que puede generar el método. Estas excepciones deben estar separadas por comas. Un ejemplo del código:

manejo de excepciones de clase pública

{

public static void main(String[] args)

{

tratar

{

métodoConLanzamientos();

}

catch(NullPointerException ex)

{

System.out.println("NullPointerException lanzada por el método methodWithThrows() será capturada aquí");

}

}

método de vacío estáticoWithThrows() lanza NullPointerException

{

Cadena s = nulo;

System.out.println(s.longitud()); //Esta declaración lanza NullPointerException

}

}

18. A menudo se recomienda mantener las operaciones de limpieza, como cerrar los recursos de la base de datos dentro del bloque 'finalmente'. ¿Por qué es necesario?

El bloque 'finally' siempre se ejecuta independientemente del hecho de si se generan excepciones en el bloque 'try' o si las excepciones generadas se capturan en el bloque 'catch' o no. Mantener las operaciones de limpieza en bloque 'finally' asegura el funcionamiento de estas operaciones en cualquier caso, y no se verá afectado por excepciones, que pueden surgir o no.

19. ¿Cómo diferenciarías entre final, finalmente y finalizar en Java?

Primero, 'final' es una palabra clave que se puede usar para hacer que una variable, un método o una clase no se puedan modificar. En pocas palabras, si una variable se declara como final, una vez que se inicializa, su valor no se puede modificar. Si un método se declara como final, no se puede anular ni modificar en la subclase. Si una clase se declara como final, no puede extenderse a más clases.

En segundo lugar, 'finally' es un bloque que se usa en el manejo de excepciones junto con los bloques 'try' y 'catch'. Este bloque siempre se ejecuta independientemente de una excepción generada o si se maneja la excepción generada. Por lo general, este bloque se usa para realizar operaciones de limpieza para cerrar los recursos como la conexión a la base de datos, los recursos de E/S, etc.

Tercero, el método finalize() es un método protegido. Pertenece a la clase java.lang.Object. Cada clase creada en Java hereda este método. El subproceso del recolector de elementos no utilizados llama a este método antes de que se elimine un objeto de la memoria. Antes de eliminar un objeto de la memoria, este método se utiliza para realizar algunas de las operaciones de limpieza.

Vacío protegido Finalize () lanza Throwable

{

//Operaciones de limpieza

}

20. ¿Qué son las excepciones personalizadas en Java?

Las clases de excepción se pueden lanzar en Java según los requisitos del flujo del programa. Estas excepciones se denominan excepciones definidas por el usuario. También se denominan excepciones personalizadas. Estas excepciones deben extender cualquiera de las clases en la jerarquía de excepciones.

21. ¿Cómo explicarías una ClassCastException en Java?

Cuando la JVM no puede convertir un objeto de un tipo a otro tipo, se genera esta excepción. Es una RunTimeException.

22. Diferenciar entre throw, throws y throwable en Java.

Primero, la palabra clave 'lanzar' se usa para lanzar una excepción manualmente en Java. Usando esta palabra clave, es posible lanzar una excepción desde cualquier método o bloque. Sin embargo, es esencial que la excepción sea del tipo java.lang.Throwable class o pertenezca a una de las subclases de java.lang.Throwable class.

En segundo lugar, la palabra clave 'throws' se usa en la firma del método en Java. Si el método es capaz de generar excepciones, se indica mediante este método. Las excepciones mencionadas son manejadas por sus respectivas funciones de llamadas. Se realiza mediante el uso de bloques try and catch o mediante la palabra clave throws.

En tercer lugar, la superclase para todos los tipos de errores y excepciones en Java se llama Throwable. Es miembro del paquete java.lang. La instrucción JVM o throw solo genera instancias de esta clase o sus subclases. El bloque catch debe contener solo un argumento y debe ser de este tipo o de sus subclases. En caso de que se creen excepciones personalizadas, también deberían extender esta clase.

23. Explique el StackOverflowError en Java.

Este es un error que genera la JVM cuando la pila se desborda en tiempo de ejecución.

24. ¿Es posible anular un método de superclase que arroja una excepción no verificada con excepciones verificadas en la subclase?

No es posible porque si un método de superclase arroja una excepción no verificada, se anulará en la subclase con la misma excepción o cualquier otra excepción no verificada. Pero no se puede anular con excepciones marcadas.

25. Defina excepciones encadenadas en Java.

En un programa, una excepción puede generar muchas excepciones al inducir un efecto dominó. Esto provoca una cadena de excepciones. Es beneficioso conocer la ubicación de la causa real de la excepción. Esto es posible con la característica de excepciones encadenadas en Java. Esto se ha introducido desde JDK 1.4. Para la implementación de excepciones encadenadas en Java, se incluyen dos nuevos constructores y dos nuevos métodos en la clase Throwable. Estos son,

Constructores de la clase Throwable:

    1. Throwable (causa arrojable): la causa es la excepción que genera la excepción actual.
    2. Throwable(String msg, Throwable cause): La cadena de mensajes es el mensaje de excepción. La excepción que genera la excepción actual es la causa aquí.

Métodos de la clase Throwable:

    1. Método getCause() : este método devuelve la causa real de una excepción generada.
    2. Método initCause (causa arrojable): este método establece la causa de la excepción de llamada.

26. ¿Qué clase se define como superclase para todos los tipos de errores y excepciones en Java?

La superclase para todos los tipos de errores y excepciones es java.lang.Throwable en Java.

27. ¿Qué se puede clasificar como una combinación correcta de los bloques Try, Catch y finalmente?

Una combinación de bloque de prueba y captura.

tratar

{

//intentar bloque

}

catch (excepción ex)

{

// atrapar bloque

}

Una combinación de intentar y finalmente bloquear.

tratar

{

//intentar bloque

}

finalmente

{

// finalmente bloquear

}

Una combinación de los tres: probar, bloquear, finalmente bloquear.

tratar

{

//intentar bloque

}

catch (excepción ex)

{

// atrapar bloque

}

finalmente

{

// finalmente bloquear

}

28. ¿Por qué usa el método printStackTrace()?

Este método se utiliza para imprimir información detallada sobre la excepción que ocurrió.

29. ¿Cuáles son algunos ejemplos de excepciones verificadas?

Algunos ejemplos de excepciones comprobadas incluyen ClassNotFoundException, SQLException y IOException.

30. ¿Cuáles son algunos ejemplos de excepciones no verificadas?

Algunos ejemplos de excepciones no verificadas incluyen NullPointerException, ArrayIndexOutOfBoundsException y NumberFormatException.

Lea también: Debe leer 47 preguntas y respuestas de la entrevista OOPS para principiantes y experimentados

Terminando

Si está interesado en obtener más información sobre big data, consulte el Diploma PG de desarrollo de software completo de upGrad & IIIT-B, que está diseñado para profesionales que trabajan y ofrece más de 500 horas de capacitación rigurosa, más de 9 proyectos y asignaciones, IIIT -Estado de exalumno B, proyectos finales prácticos prácticos y asistencia laboral con las mejores empresas.

Si está interesado en aprender Data Science y optar por una carrera en este campo, consulte el Programa Executive PG de IIIT-B & upGrad en Data Science, creado para profesionales que trabajan y ofrece más de 10 estudios de casos y proyectos, talleres prácticos prácticos. , tutoría con expertos de la industria, 1 a 1 con mentores de la industria, más de 400 horas de aprendizaje y asistencia laboral con las mejores empresas.

Prepárate para una carrera del futuro

Solicitar Maestría en Ciencias en Ciencia de Datos