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