Story Transcript
Anexo. Control de errores
Tipos de errores Los errores en un programa o algoritmo se pueden clasificar de la siguiente manera •
•
Errores de compilación Los errores de compilación no permiten la ejecución del programa, estos errores pueden ser errores de sintaxis o debido al uso de funciones no válidas. Por ejemplo, si escribimos mal el nombre de una variable definida. Errores de ejecución Los errores de ejecución se detectan cuando se procesa una operación no válida. Estos errores pueden ser debidos a la ejecución de procesos no válidos, errores lógicos de tipo bucle infinito, errores lógicos de tipo resultado incorrecto y errores gestionados. Por ejemplo, introducir un tipo de datos no adecuado.
Errores de compilación Cuando hemos introducido el código del programa se produce un primer control de fallos que detecta los errores de sintaxis, después, cuando compilamos el código, el compilador es capaz de detectar problemas que impiden la ejecución del proyecto. Para evitar los errores de compilación se recomienda: 1. Poner nombres coherentes a las variables, por ejemplo, en una suma deben intervenir variables como sumando1, sumando2 y resultadoSuma, no sería tan correcto utilizar n1, n2 y n3. 2. Conocer bien el lenguaje de programación que estamos utilizando. 3. En el caso de que exista un error de compilación, el compilador marcará la línea de forma inmediata, por ello debe estar pendiente de esta situación para corregirla cuando antes.
Errores de compilación. Ayudas de Eclipse Para evitar errores por uso inadecuado de referencias u otros, se recomienda utilizar la combinación de teclas CTRL+Barra espaciadora en el momento de escribir una referencia a un método, recurso o variable. Esto es debido a que Eclipse nos sugiere todas las posibilidades en el momento en que tenemos que introducir una referencia en el código. Por ejemplo, en la siguiente imagen se puede observar la consecuencia de pulsar Ctrl+Barra espaciadora después de escribir Log.e(“MIO”, e.
Al surgir la lista de posibilidades, lo único que hay que hacer es seleccionar aquella que es adecuada para realizar nuestros objetivos y automáticamente se escribe en el código. De esta forma, se evita que el programador tenga errores de sintaxis.
Errores de compilación. Detectar en Eclipse Vamos a ver un error de compilación y como Eclipse nos puede ayudar a resolverlo. Suponemos que en el método onCreate() de la Activity principal hemos introducido erróneamente el nombre del Layout enlazado.
Eclipse subraya los errores y además en la ventana Problems se muestran las descripciones de los errores de compilación. La ventana Problems se puede ver en la parte inferior de la ventana. Si la ventana está oculta se deben ejecutar las siguientes opciones de menú Window>ShowView>Problems.
Desde la ventana Problems podemos hacer doble clic a la línea del error y automáticamente selecciona el error en el código.
Errores de ejecución Los errores de ejecución son más difíciles de detectar pues tan sólo se presentan cuando el proceso de ejecución activa el error. Estos errores pueden ser debidos a un uso fallido de los tipos de datos, la ejecución de un bucle infinito, referencias a objetos inexistentes en memoria, etc. Para evitar que un error en tiempo de ejecución finalice abruptamente el programa, se recomienda utilizar las instrucciones try/catch en aquellos bloques de código que puedan ser susceptibles de errores. Cuando se produce un error de ejecución, Android interrumpe la aplicación y muestra un mensaje en una ventana, donde se ve el nombre de la app y la información de la interrupción.
Errores de ejecución. Ejemplo Vamos a provocar un error en tiempo de ejecución en el método onCreate() de un app básica. public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Object o =null; o.toString(); //Error de ejecución al hacer una referencia a un objeto nulo } Si prueba la ejecución de este proceso podrá comprobar que se interrumpe la ejecución de la aplicación y se muestra un mensaje de aviso.
Errores de ejecución: try/catch Para detectar correctamente un error debemos utilizar try/catch de la siguiente forma public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); try { Object o = null; o.toString();//Error de ejecución al hacer una referencia a un objeto nulo } catch (Exception e) { Toast.makeText(this, e.toString(), Toast.LENGTH_SHORT).show(); } } Así, el error no interrumpe la ejecución de la aplicación. El proceso en ejecución, al detectar el problema, pasa a ejecutarse el bloque catch. Además, tal como tenemos programado el método, mostrará en pantalla un mensaje con el error
Errores de ejecución. Log Los mensajes de error no tenemos por qué mostrarlos con un mensaje por pantalla, sino que podemos utilizar la clase android.util.Log de Java para administrar nuestros posibles errores de ejecución. En Android, los errores se clasifican en tipos y, cada uno de ellos, tiene su correspondencia con un método estático: Método estático de Log Tipo de error e() w() i() d() v()
error warning info debug verbose
Todos estos métodos reciben como parámetros una etiqueta (tag) y el mensaje de error, por ejemplo: Log.e (ELTAG, "Mensaje de error");
Errores de ejecución. LogCat Para ver los mensajes de error, Eclipse posee una ventana llamada LogCat. Sino la tenemos presenta en nuestra vista, podemos ir a Window>Show View>LogCat, y entonces se mostrará la ventana en la parte inferior del IDE.
En la ejecución de un proyecto se muestran muchos mensajes en la ventana LogCat, por ello debemos utilizar filtros para acceder solamente a aquellos avisos que son útiles para nosotros.
Errores de ejecución. Crear filtros LogCat Para crear un filtro debemos utilizar un Tag personal que identifique a nuestra información, por ejemplo, la siguiente línea utiliza como Tag la cadena “MIO”. Log.e("MIO",e.toString()); En la ventana LogCat tenemos que utilizar el símbolo que se encuentra en la parte izquierda de la ventana para crear un filtro. Entonces, surge una ventana donde debemos introducir, como mínimo, el Filter Name, el Tag y el nivel de Log como se puede observar a continuación.
Errores de ejecución. Ver filtros LogCat Al crear el filtro con el nombre Mis Errores, éste se muestra en la parte izquierda de la ventana. Para ver sólo los errores filtrados, tan sólo hay que hacer clic sobre el nombre del filtro. Así el código siguiente provoca un error de ejecución que se puede consultar en la ventana LogCat, hacienda clic sobre el filtro recién creado. public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); try { Object o = null; o.toString();//Error de ejecución al hacer una referencia a un objeto nulo } catch (Exception e) { Log.e("MIO",e.toString()); } }
Lecturas recomendadas http://androideity.com/2012/05/23/aprendiendo-a-dominar-eclipse-errores-en-el-proyecto/