Soy nuevo en Java y estaba leyendo su documentación sobre excepciones. , y especialmente las Excepciones no verificadas - La página de controversia .
El resultado final dice:
Si se puede esperar razonablemente que un cliente se recupere de una excepción, conviértalo en una excepción marcada. Si un cliente no puede hacer nada para recuperarse de la excepción, conviértalo en una excepción no verificada.
No entiendo el artículo. ¿De qué se trata "la controversia"? ¿Puedes explicarlo en palabras simples?
java
api-design
exceptions
ABcDexter
fuente
fuente
Respuestas:
Primero te daré un ejemplo (pero al final es la respuesta por qué la controversia).
Supongamos que está editando un documento en un editor de documentos basado en Java y, una vez que haya terminado, elija Archivo-> Guardar como ... y elija guardar el documento en un volumen para el que no tiene permiso de escritura. El Editor no se estrellaría con una fea traza de pila, simplemente le diría que no puede guardar el archivo y le permitirá continuar editando y / o guardar en otra ubicación.
En tal caso, es probable que se esperara una excepción comprobada, atrapada y actuada para recuperarse gentilmente de ella.
Por otro lado, suponga que se trata de una división por cero o una excepción de puntero nulo causada por un error de programación que muestra su cabeza fea solo en ciertas condiciones. Eso podría suceder en cualquier parte del código, la RAM puede estar dañada, etc. Ningún documento de API le diría "este método arrojaría una división por cero si la RAM está dañada" .
Las excepciones marcadas deben ser parte del diseño y los usuarios de esa API deben prepararse para manejarlas. Las excepciones no verificadas pueden ocurrir en casi todas partes y están fuera de nuestro control.
La controversia surge de los programadores que usan excepciones no verificadas (que se extienden desde RuntimeException) cuando deberían usar excepciones marcadas:
fuente
No hay controversia en esa página. Es Oracle que le dice a la gente que use excepciones marcadas.
La falsa "controversia" que han inventado aquí es entre los diseñadores de idiomas y los usuarios de idiomas. Los diseñadores permitieron a las personas tirar y atrapar cosas que (en su mente) no deberían ser arrojadas o atrapadas. Entonces crearon una página web quejándose de desarrolladores perezosos.
fuente