Utilizar controladores de excepciones filtradas por el usuario

Actualmente, Visual Basic admite las excepciones filtradas por el usuario. Los controladores de excepciones filtrados por el usuario detectan y controlan las excepciones basándose en requisitos que se definen para la excepción. Estos controladores utilizan la instrucción Catch con la palabra clave When.

Esta técnica resulta útil cuando un objeto de excepción concreto corresponde a varios errores. En este caso, normalmente, el objeto tiene una propiedad que contiene el código de error específico asociado al error. La propiedad del código de error se puede usar en la expresión para seleccionar sólo el error concreto que se desea controlar en esa cláusula Catch.

El siguiente ejemplo de Visual Basic ilustra la instrucción Catch/When.

Try
      'Try statements.
   Catch When Err = VBErr_ClassLoadException
      'Catch statements.
End Try

La expresión de la cláusula definida por el usuario no tiene ningún tipo de restricción. Si ocurre una excepción durante la ejecución de la expresión filtrada por el usuario, se descarta dicha excepción y la expresión de filtro se evalúa como False. En este caso, el Common Language Runtime continúa buscando un controlador para la excepción actual.

Combinar las cláusulas de excepción específica y filtrada por el usuario

Una instrucción Catch puede contener las cláusulas de excepción específica y la filtrada por el usuario. El motor en tiempo de ejecución prueba primero la excepción específica. Si la excepción específica se realiza correctamente, el motor en tiempo de ejecución ejecuta el filtro de usuario. El filtro genérico puede contener una referencia a la variable declarada en el filtro de la clase. Tenga en cuenta que el orden de las dos cláusulas de filtro no se puede invertir.

En el siguiente ejemplo de Visual Basic se muestra la excepción específica ClassLoadException de la instrucción Catch además de la cláusula filtrada por el usuario que utiliza la palabra clave When.

Try
      'Try statements.
   Catch cle As ClassLoadException When cle.IsRecoverable()
      'Catch statements.
End Try

Vea también

Tareas

Cómo: Utilizar el bloque Try/Catch para detectar excepciones

Cómo: Utilizar excepciones específicas en un bloque Catch

Conceptos

Procedimientos recomendados para controlar excepciones

Otros recursos

Fundamentos del control de excepciones