9

He estudiado eso: sin embargo, con una excepción no comprobada, el compilador no obliga a los programadores de los clientes a detectar la excepción o a declararla en una cláusula throws. De hecho, los programadores del cliente pueden incluso no saber que la excepción podría ser lanzada. por ejemplo, StringIndexOutOfBoundsException arrojado por el método charAt() de String.Comprobado frente a excepción no comprobada

¿Qué significa?

de acuerdo con ese código no hay necesidad de poner try catch block en el código, pero he visto fuerzas del compilador para poner el código en try catch block.

Estoy muy confundido de lo que son exactamente?

Respuesta

4

¿Cuál es su pregunta exactamente? Los compiladores no deberían (y no lo harán) obligarlo a intentar/atrapar excepciones sin marcar, que irían en contra de lo que son exactamente.

La idea general es que las excepciones comprobadas son algo que puede prever, pero que pueden basarse en datos que están fuera de su control y con los que debe lidiar. Las excepciones no verificadas generalmente representan errores en su programa.

Hay una serie de personas que piensan que las excepciones comprobadas son un error en la plataforma Java y solo las usan con moderación o no las usan. Puede leer más sobre este debate buscando en google.

16

Las excepciones sin marcar son aquellas que extienden la clase RuntimeException. El compilador nunca lo forzará a detectar dicha excepción u obligarlo a declararlo en el método utilizando la palabra clave throws. Todos los demás tipos de excepción (que no se extienden a RuntimeException) se verifican y, por lo tanto, deben declararse lanzados y/o atrapados.

Las excepciones comprobadas se utilizan cuando desea que la persona que llama de su método (es decir, el usuario de su API) maneje explícitamente el caso excepcional en su API. Las excepciones marcadas se declaran cuando usted cree que la llamada podrá hacer algo significativo con ese caso excepcional, como volver a intentar la llamada, recuperar los cambios o convertirlos en algún mensaje de error legible por el usuario.

Si cree que no hay nada útil que la llamada pueda hacer con respecto a la excepción (especialmente cuando representa un error o un uso incorrecto de su API), entonces la excepción debe estar desmarcada. Además, una API con demasiadas excepciones controladas puede ser molesto para programar con (por ejemplo, tratar de usar la API Java Reflection =)

+10

Las excepciones que se extienden desde 'Error' también están desmarcadas. – stolsvik

3

Es porque,

  1. excepciones no comprobadas no son el resultado de la culpa del programador. En cambio, son las consecuencias graves en las que no se espera que nosotros (programadores) hagamos mucho con él.
  2. En caso de Excepción Controlada, es una excepción generada debido a la falla del programador & a menudo puede ser resuelto por el propio programador.

Comprobar los siguientes enlaces:

Why RunTime Exceptions are unchecked ?
Checked vs Unchecked Exception ?

+5

Es al revés. Cuando una Excpetion es culpa de los programadores, debe ser desmarcada. No tiene sentido "detectar" un error en lugar de solucionarlo. Si NO, los programadores fallan pero son causados ​​por un parámetro externo (por ejemplo, un error de red), debe ser verificado. – Tomas

+2

** ¡Es engañoso! ** ¿Alguien con suficientes representantes para editar arregla esto? – ADTC

+0

He enviado una corrección y está pendiente de revisión por pares. – PaulrBear

0
  • excepciones no comprobadas se genera debido a un error de programación.No siempre son atrapados por el programa porque generalmente requieren un cambio por parte del programador para ser reparado.
  • Las excepciones comprobadas no son el resultado de un error de programación. En cambio, ocurren en la operación normal de un programa. Un ejemplo sería una IOException que se lanza cuando un archivo no se puede abrir. Debido a que estas excepciones ocurren incluso si no hay nada incorrecto con el programa, es necesario decirle al programa cómo manejar la excepción.
+0

Un ejemplo obvio de la utilidad de las excepciones comprobadas es la utilización de llamadas API que acceden/dependen de recursos que pueden no estar siempre presentes, básicamente java.io, entre otros. Dado que este tipo de situaciones de interrupción pueden y deben anticiparse (por lo general, atrapados con una respuesta inteligente de mensaje de error, al menos), aplicar esa carga mínima de administración de excepciones al programador es una buena práctica. – theRiley

Cuestiones relacionadas