miércoles
jul102013
Unreachable code
Estoy preparándome para una certificación de Java, en concreto la OCPJP6. Estoy viendo cosas interesantes a las que yo antes no prestaba atencion pues Eclipse o el IDE que usemos nos previenen que ocurran. La certificacion esta llena de estos pequeños detalles, que fuera de ser triviales, se nos presentan en forma de breves snippets de código, como el siguiente:
public abstract class A26D{ public abstract void start() throws ArithmeticException; public static void main(String args[]){ A26D a=new A26D(){ public void start() throws ArithmeticException{ System.out.print(1); try{ System.out.print(2); throw new ArithmeticException(); System.out.print(3); }catch(Exception e){ System.out.print(4); }finally{ System.out.print(5); } } }; a.start(); } }
Cual creéis que será el resultado de este programa?
a. 1245
b. 12
c. Error en ejecución
d. Error en compilación
Reader Comments (9)
ese título te delata :P
Sí, el título quizás no haya sido el más acertado ;) jejeje
Yo digo d
Vale, sin pistas en la próxima :)
Uhmmm. La a)
El compilador es muy listo!!! :D
Bueno, tampoco es que el compilador sea tan listo; este código lo compila:
....
if(true) throw new ArithmeticException();
System.out.print(3);
...
Abraham, lo curioso es que si cambias el if (true) por un while (true) sí sale el aviso de unreachable statement... Tiene que ser un bug, a la fuerza...
Demonios como puede equivocarme pensé que era a
pero me olvide que el compilador se da cuenta que hay código que no puede ser ejecutado
:-(
Lo lamentable es que existan "certificaciones" con este tipo de preguntas-chorrada y que si apruebas te dan un bonito titulito en plan "Se mucho de eso que se llama Java", te lo dice alguien que ha dado clases de programación en la universidad, en su momento mis compañeros y yo teníamos claro que este tipo de evaluación de conocimientos tipo test no valía un pimiento respecto a lo importante: resolver problemas utilizando un lenguaje concreto.
Una certificación de este tipo sólo certifica que sabes "leer código Java" y ser capaz de reconocer casos límite-chorra que son más bien ejemplos de mala programación que otra cosa, pero no que sabes programar en Java.
Desde luego para mi una certificación basada en tests su valor es cercano a 0, pero no 0 así que te animo a que la hagas diga lo que yo diga, pues siempre habrá gente que admirará tus cualidades gracias a ese titulito (aunque no sea yo).