Cómo: Implementar bloques Try...Catch de E/S en Visual Basic
Actualización: noviembre 2007
El ejemplo de código siguiente implementa un bloque Try...Catch que controla Exception, IOException y todas las excepciones que se derivan de IOException.
Ejemplo
Este ejemplo va de lo más concreto a lo menos concreto; las excepciones se prueban de una en una.
Este ejemplo de código también está disponible en el fragmento de código de IntelliSense. En el selector de fragmentos de código, se encuentra en Sistema de archivos - Procesando unidades, carpetas y archivos. Para obtener más información, vea Cómo: Insertar fragmentos de código en el código (Visual Basic).
Try
' Add code for your I/O task here.
Catch dirNotFound As System.IO.DirectoryNotFoundException
' Code to handle DirectoryNotFoundException.
Catch fileNotFound As System.IO.FileNotFoundException
' Code to handle FileNotFoundException.
Catch pathTooLong As System.IO.PathTooLongException
' Code to handle PathTooLongException.
Catch ioEx As System.IO.IOException
' Code to handle IOException.
Catch security As System.Security.SecurityException
' Code to handle SecurityException.
Catch ex As Exception
' Rethrow exception if anything else has occurred.
Throw ex
Finally
' Dispose of any resources you used or opened in the Try block.
End Try
Compilar el código
Agregue el código que desee ejecutar al bloque Try.
Programación eficaz
Utilice este bloque de código como punto inicial para ajustar una operación de datos en una instrucción Try...Catch. Este bloque Try...Catch está diseñado para detectar y volver a producir todas las excepciones. Es posible que no sea la elección más adecuada para su proyecto. Para una ver descripción sobre opciones de control de excepciones, consulte Procedimientos recomendados para utilizar fragmentos de código de IntelliSense.
Puede reducir la probabilidad de excepciones utilizando los controles de formularios Windows Forms como el componente OpenFileDialog (Componente, formularios Windows Forms) y los controles de componente SaveFileDialog (Componente, formularios Windows Forms) que limitan las elecciones del usuario a los nombres de archivo válidos. La propiedad FileInfo.Exists puede comprobar si existe un archivo antes de intentar abrirlo. No obstante, el uso de estos controles y clases no es infalible. El sistema de archivos puede cambiar entre el momento en el que el usuario selecciona un archivo y el momento en el que se ejecuta el código. Por ello, cuando se trabaja con archivos es prácticamente obligatorio realizar un control de excepciones.
Seguridad
Para muchas tareas de archivos, el ensamblado requiere un nivel de privilegios concedido por la clase FileIOPermission. Si realiza una ejecución en un contexto de confianza parcial, el código podría desencadenar una excepción por falta de privilegios. Para obtener más información, consulte Conceptos básicos sobre la seguridad de acceso a código. El usuario también necesita tener acceso al archivo, si existe. Para obtener más información, consulte Listas de control de acceso (ACL).
No debe deducir nada sobre el contenido del archivo a partir de la extensión del nombre del archivo. Por ejemplo, es posible que el archivo Form1.vb no sea un archivo de código fuente Visual Basic.
Vea también
Tareas
Cómo: Filtrar errores en un bloque Catch de Visual Basic
Cómo: Comprobar la excepción interna de una excepción
Conceptos
Procedimientos recomendados para utilizar fragmentos de código de IntelliSense
Información general sobre el control estructurado de excepciones de Visual Basic
Referencia
Instrucción Try...Catch...Finally (Visual Basic)