Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Practica A
Practica A
excepciones
Nota Este laboratorio se centra en los conceptos de este módulo y por ello,
puede no cumplir las recomendaciones de seguridad de Microsoft.
Archivos de solución Los archivos de solución de este laboratorio se encuentran en las carpetas
Ex01\Solution y Ex02\Solution dentro del fichero labs08.zip.
Tiempo estimado para
realizar este laboratorio:
45 minutos
Ejercicio 1
Uso de los bloques Try…Catch
En este ejercicio, agregará bloques Try…Catch para controlar excepciones en
un programa existente que abre y muestra el contenido de un archivo de texto.
Ë Abrir el proyecto
• Abra el proyecto ExceptionApplication.sln ubicado en la carpeta
Ex01\Starter dentro del fichero labs08.zip.
Ë Generar la aplicación
• En el menú Generar, haga clic en Generar solución.
¿Qué ocurre?
La generación falla debido a errores de sintaxis. Esto se debe a que la
biblioteca que contiene la clase MessageBox no está referenciada en el
proyecto.
____________________________________________________________
____________________________________________________________
Ë Arreglar el error
1. En el Explorador de soluciones, haga clic con el botón derecho en
Referencias y clic en Agregar referencia. En el cuadro de diálogo
Agregar Referencia, en la ficha .NET, haga clic en
System.Windows.Forms.dll. Haga clic en Seleccionar, y clic en Aceptar.
2. Después de arreglar los errores, genere la aplicación y ejecútela en modo de
depuración.
¿Qué ocurre cuando ejecuta la aplicación? ¿Por qué?
La aplicación deja de responder debido a una excepción no controlada.
El archivo test.txt no existe.
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________
____________________________________________________________
____________________________________________________________
_____________________________________________________________
_____________________________________________________________
Ë Abrir el proyecto
• Abra el proyecto ExceptionApplication.sln ubicado en la carpeta
Ex02\Starter dentro del fichero labs08.zip.
_____________________________________________________________
____________________________________________________________
Ë Depurar la aplicación
1. Establezca un punto de interrupción en la línea de código
MessageBox.Show.
2. Vuelva a ejecutar la aplicación en modo de depuración.
¿Por qué la aplicación no ha entrado en modo de interrupción en el punto de
interrupción?
La excepción se ha producido antes de la línea de código
MessageBox.Show. Cuando una excepción ocurre en una línea de un
bloque Try, las líneas de código restantes del bloque Try no se ejecutan
y el flujo se transfiere al bloque Catch.
____________________________________________________________
____________________________________________________________
____________________________________________________________
¿Se ejecuta el código para cerrar file y reader después de que se produzca
la excepción?
No.
____________________________________________________________
____________________________________________________________
¿Cómo puede asegurarse de que el código para cerrar file y reader siempre
se ejecute?
Escribiendo explícitamente el código para cerrar estos recursos en un
bloque Finally.
_____________________________________________________________
_____________________________________________________________
7. Cerrar la aplicación.
4. Observe que este código contiene dos errores de sintaxis. ¿Cuál es la causa
de los errores?
File y reader sólo tienen visibilidad a nivel de bloque porque están
declarados en el bloque Try.
_____________________________________________________________
_____________________________________________________________
5. Declare las variables file y reader fuera del bloque Try, y cambie el código
dentro del bloque Try para crear nuevas instancias de las clases FileStream
y StreamReader y asignarlas a estas variables. Su código debería ser
similar al siguiente:
Sub Main
Try
file = New FileStream("input.txt", FileMode.Open)
reader = New StreamReader(file)
...
Catch ex as Exception
MessageBox.Show(ex.Message)
Finally
...
End Try
Ë Probar la aplicación
1. Establezca un punto de interrupción en la instrucción Finally.
2. Genere y ejecute la aplicación en modo de depuración.
3. Haga clic en OK en el cuadro de mensaje, y utilice la tecla F8 para recorrer
paso a paso el código y verificar que la aplicación ejecuta el código del
bloque Finally.
4. Cierre la aplicación.
5. Elimine el punto de interrupción.
Ë Probar la aplicación
1. Ejecute la aplicación en modo de depuración. En el cuadro de mensaje que
aparece, haga clic en OK.
¿Por qué se produce una excepción no controlada de tipo
NullReferenceException?
Esta excepción se produce porque se ha realizado un intento de invocar
el método Close en un objeto de archivo que no existe. El archivo de
input no existe en la carpeta C:\. Como este archivo no existe, la nueva
instancia de la clase FileStream no se ha creado.
____________________________________________________________
____________________________________________________________
Ë Probar la aplicación
• Genere y ejecute la aplicación.
Ahora, la aplicación debería capturar la excepción, mostrar un cuadro de
mensaje, y cerrarse después de hacer clic en OK en el cuadro de mensaje.