ocp, jse 6 programmer (1z0-851) - guia practica 2 de 7(flujos, excepciones y afirmaciones)

5

Click here to load reader

Upload: oscar-vasquez-flores

Post on 21-Jun-2015

604 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: OCP, JSE 6 Programmer (1Z0-851) - Guia practica 2 de 7(Flujos, Excepciones y Afirmaciones)

Oracle Certified Professional, Java SE 6 Programmer (1Z0-851) - Guía practica 2 de 7.

Oscar Vásquez Flores ([email protected] )

Esta guía práctica cubre la siguiente sección del examen:

Sección 2: Flujos, Excepciones y aserciones.

2.1. Desarrollar código que implemente una sentencia if o switch; e identificar tipos

de argumentos validos para estas sentencias.

2.2. Desarrollar código que implemente todas las formas de bucles, incluido el uso

de for, for mejorado(for-each), do, while, uso de etiquetas en bucles, break y

continue; explicar los valores que toman las variables contadoras de los bucles

durante y después de su ejecución.

2.3. Desarrollar código que haga uso de aserciones, distinguir el uso apropiado e

inapropiado de las aserciones.

2.4. Desarrollar código que haga uso de excepciones y manejo de estos (try, catch,

finally), declarar métodos y sobre escritura de métodos que lancen excepciones.

2.5. Reconocer el efecto de que se genere una excepción en un punto especificado

del código. Notar que la excepción puede ser una excepción en tiempo de

ejecución, una excepción checked o un error.

2.6. Reconocer situaciones que generen alguna de las siguientes excepciones:

ArrayIndexOutOfBoundsException, ClassCastException, IllegalArgumentException,

IllegalStateException, NullPointerException, NumberFormatException,

AssertionError, ExceptionInInitializerError, StackOverflowError o

NoClassDefFoundError. Entender de esa excepciones cuales son lanzadas por el

JVM, y reconocer situaciones en las cuales las otras son lanzadas por programacion.

Page 2: OCP, JSE 6 Programmer (1Z0-851) - Guia practica 2 de 7(Flujos, Excepciones y Afirmaciones)

Oracle Certified Professional, Java SE 6 Programmer (1Z0-851) - Guía practica 2 de 7.

Oscar Vásquez Flores ([email protected] )

2.1. Desarrollar código que implemente una sentencia if o switch; e

identificar tipos de argumentos validos para estas sentencias.

❑ La única expresión valida dentro de una sentencia if, es una expresión booleana,

es decir una expresión que retorne una un tipo boolean o Boolean.

❑ No confundir la asignación (=) con la prueba de la igualdad (==).

Ejemplo:

boolean x = false;

if (x = true) { } // Es una asignación, entonces siempre va a retornar true.

❑ Las llaves son opcionales para un bloque if, si solo tiene una sentencia

condicional.

❑ La sentencia switch puede evaluar únicamente tipos de datos enum, byte,

short, int o char.

Esto es invalido.

long s = 30;

switch(s) { }

❑ El dato que esta en la sentencia case, debe ser un valor literal o una variable

final, o una expresión constante, incluido un enum. No se puede tener una case

con una variable no final o un rango de valores.

❑ En una sentencia switch cuando se entra a un case y este no tiene una

sentencia break, se entrara a todos los siguientes case, hasta encontrar un break,

a pesar de que el valor que representan los demás case no tenga un valor que

coincide con la buscado por el switch, es muy importe el uso del break para

terminar cada case, si así se desea, debido a que el uso de break es opcional.

❑ Se puede usar un bloque default para el caso en que ninguna sentencia case

cumpla la condición del switch.

❑ El bloque default se puede ubicar en cualquier parte en una sentencia switch, y

se ingresa a este si algún case previo fue activado, si el default no tiene un break

se ejecutará el siguiente case, hasta encontrar algún break.

2.2. Desarrollar código que implemente todas las formas de bucles,

incluido el uso de for, for mejorado(for-each), do, while, uso de etiquetas

en bucles, break y continue; explicar los valores que toman las variables

contadoras de los bucles durante y después de su ejecución.

❑ La forma basica del bucle for tiene tres partes: declaración y/o inicialización, evaluación

booleana y una expresión para iteración.

❑ Si una variable es incrementada o evaluada dentro del for, esta debe ser declarada

antes del for o dentro de la sección de declaración del for.

❑ Una variable que se declara dentro de un for no puede ser accedida fuera del for.

❑ Se puede inicializar mas de una variable del mismo tipo en la sección de declaraciones

del for, cada inicialización debe estar separada por una coma.

Page 3: OCP, JSE 6 Programmer (1Z0-851) - Guia practica 2 de 7(Flujos, Excepciones y Afirmaciones)

Oracle Certified Professional, Java SE 6 Programmer (1Z0-851) - Guía practica 2 de 7.

Oscar Vásquez Flores ([email protected] )

❑ Un for mejorado (Disponible desde JSE 6.0), tiene dos partes, una declaración (La

variable debe ser compatible con los elementos del array o colección) y una expresión (array o colección). Se utiliza únicamente para navegar en los arrays y colecciones.

❑ Dentro del bloque del for mejorado la variable que utilizamos en la declaración inicial

contendrá o representara cada elemento del array.

❑ La sección de expresión booleana de los bucles en Java siempre debe retornar un dato

tipo boolean, de lo contrario se genera un error de compilación.

❑ En un bucle do se ingresa por lo menos una vez al cuerpo de este.

2.3. Desarrollar código que haga uso de aserciones, distinguir el uso

apropiado e inapropiado de las aserciones.

Esta parte se desarrolla en otros puntos.

2.4. Desarrollar código que haga uso de excepciones y manejo de

estos(try, catch, finally), declarar métodos y sobre escritura de métodos

que lancen excepciones.

❑ Las excepciones pueden ser de dos tipos: checked (manejadas) y unchecked (no

manejadas).

❑ Las excepciones checked incluyen todos los sub tipos de la clase Exception, pero sin

considerar a las que sean sub tipo de RuntimeException.

❑ Las excepciones checked son sujetas a ser manejadas o declaración de reglas,

cualquier metodo que pueda lanzar una excepción checked (incluyendo métodos que invocan a otros métodos que puedan lanzar una excepción checked) deberá declara una excepción usando la clausula throws, o manejar la excepción con un apropiado try/catch.

❑ Los sub tipos de Error o RuntimeException son unckecked, entonces el compilador

no obliga a manejarlas o declarar reglas. Se tiene la libertad de manejarlas si se desea o declararlas.

❑ Si se usa el bloque opcional finally, este siempre será invocado, sin importar que se

genere una excepción o no, y sin importar que la excepción sea atrapada.

❑ La única forma para que el bloque finally no sea invocado es cuando se tenga un

apagado de la JVM, por ejemplo cuando se invoca a System.exit() dentro del código antes del bloque finally.

❑ Al invocar a finally no significa que este siempre se completara o ejecutara todo su

bloque, debido a que dentro de este bloque se puede generar una excepción o lanzar una System.exit() el cual lo interrumpirá.

❑ Una excepción no controlada pasara de metodo a metodo (iniciando por el metodo que

genero la excepción) hasta que alguno de ellos tenga un try/catch que lo controle, de lo contrario provocara que se termine el programa (Cancelación del JVM).

❑ Se pueden crear excepciones personalizadas extendiendo la clase Exception o algún

sub tipo de esta. Según eso la excepción se considera checked, entonces el compilador forzara a manejarla o declararla.

Page 4: OCP, JSE 6 Programmer (1Z0-851) - Guia practica 2 de 7(Flujos, Excepciones y Afirmaciones)

Oracle Certified Professional, Java SE 6 Programmer (1Z0-851) - Guía practica 2 de 7.

Oscar Vásquez Flores ([email protected] )

❑ Todos los bloques catch deben ser ordenados del más especificos al más general.

Por ejemplo si se tiene una clausula catch con IOException y otro con Exception, se deberá colocar primero IOException. De otro forma la excepción tipo IOException será atrapada por el bloque catch de Exception, el bloque catch atrapa cualquier excepción que sea un sub tipo del argumento, luego de eso ya no se continua con el siguiente catch, el compilar generara un error cuando se tenga clausulas que nunca serán alcanzadas.

2.5. Reconocer el efecto de que se genere una excepción en un punto

especificado del código. Notar que la excepción puede ser una excepción

en tiempo de ejecución, una excepción checked o un error.

Esta parte se desarrolla en otros puntos.

2.6. Reconocer situaciones que generen alguna de las siguientes

excepciones: ArrayIndexOutOfBoundsException, ClassCastException,

IllegalArgumentException, IllegalStateException, NullPointerException,

NumberFormatException, AssertionError, ExceptionInInitializerError,

StackOverflowError o NoClassDefFoundError. Entender de esa excepciones

cuales son lanzadas por el JVM, y reconocer situaciones en las cuales las

otras son lanzadas por programacion.

❑ Algunas excepciones son creadas por los programadores otras son creadas por la

JVM.

❑ Las siguientes son ejemplos de excepciones unchecked.

* Sub clases de java.lang.RuntimeException.

Estas excepciones pueden ser lanzadas en programación.

ArrayIndexOutOfBoundsException, indica que un array a sido accedido con un

índice ilegal. El índice es negativo, mayor o igual que el tamaño del array. Es una

sub clase de IndexOutOfBoundsException.

ClassCastException, indica que el código intenta hacer un cast de un objeto hacia

una sub clase de la cual no es instancia, ejemplo el siguiente código genera esa

excepción.

Object x= new Integer(0);

System.out.println((String)x);

IllegalArgumentException, indica que al metodo a sido pasado un argumento

ilegal o inapropiado.

IllegalStateException, Es una señal que un metodo a sido invocado en un tiempo

inapropiado. En otras palabras, el entorno Java o aplicación Java no esta en un

apropiado estado para la operación solicitada.

NullPointerException, Ocurre cuando una aplicación intenta usar un null cuando

un objeto es requerido.

Page 5: OCP, JSE 6 Programmer (1Z0-851) - Guia practica 2 de 7(Flujos, Excepciones y Afirmaciones)

Oracle Certified Professional, Java SE 6 Programmer (1Z0-851) - Guía practica 2 de 7.

Oscar Vásquez Flores ([email protected] )

NumberFormatException, Indica que una aplicación a intentado convertir una

cadena a un tipo numérico, pero la cadena no tiene un formato apropiado. Es una

sub clase de IllegalArgumentException.

* Sub clases de java.lang.Error.

Estas excepciones son lanzadas usualmente solo por el JVM.

AssertionError, Indica que el assertion a fallado.

ExceptionInInitializerError, Indica que una excepción inesperada a ocurrido

durante una inicialización estática. Es una sub clase de LinkageError.

StackOverflowError, Ocurre cuando existe un desbordamiento de pila, en

aplicaciones recursivas por entrar muy profundo, es una sub clase de

VirtualMachineError.

NoClassDefFoundError, Se genera cuando el JVM o el cargador de clases intenta

cargar una definición de clase pero no se encuentra la definición de esta. Es una

sub clase de LinkageError.