Compartir a través de


Cómo: Detectar una excepción en Visual Basic

Actualización: noviembre 2007

Este ejemplo muestra cómo se utiliza un bloque Try y Catch para detectar excepciones.

Ejemplo

Este ejemplo muestra cómo se utiliza un bloque Try…Catch para detectar una excepción OverflowException.

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 Lenguaje Visual Basic. Para obtener más información, vea Cómo: Insertar fragmentos de código en el código (Visual Basic).

Dim Top As Double = 5
Dim Bottom As Double = 0
Dim Result As Integer
Try
    Result = CType(Top / Bottom, Integer)
Catch Exc As System.OverflowException
    MsgBox("Attempt to divide by zero resulted in overflow")
End Try

Para este ejemplo se necesita:

  • Una referencia al espacio de nombres System.

El ejemplo de código siguiente implementa un bloque Try...Catch que controla Exception, IOException y todas las excepciones que se derivan de IOException.

Try
    ' Add code for your I/O task here. 
Catch dirNotFound As System.IO.DirectoryNotFoundException
    Throw dirNotFound
Catch fileNotFound As System.IO.FileNotFoundException
    Throw fileNotFound
Catch pathTooLong As System.IO.PathTooLongException
    Throw pathTooLong
Catch ioEx As System.IO.IOException
    Throw ioEx
Catch security As System.Security.SecurityException
    Throw security
Catch ex As Exception
    Throw ex
Finally
    ' Dispose of any resources you used or opened in the Try block. 
End Try

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: Producir una excepción en Visual Basic

Cómo: Comprobar código con un bloque Try...Catch en Visual Basic

Cómo: Liberar recursos con un bloque Try...Finally en Visual Basic

Cómo: Filtrar errores en un bloque Catch de Visual Basic

Cómo: Comprobar la excepción interna de una excepción

Solucionar problemas de control de excepciones

Conceptos

Elegir cuándo se debe utilizar el control estructurado de excepciones y cuándo el control no estructurado de excepciones