Compartir vía


TryExpression Clase

Definición

Representa un bloque try/catch/finally/fault.

public ref class TryExpression sealed : System::Linq::Expressions::Expression
public sealed class TryExpression : System.Linq.Expressions.Expression
type TryExpression = class
    inherit Expression
Public NotInheritable Class TryExpression
Inherits Expression
Herencia
TryExpression

Ejemplos

En el ejemplo siguiente se muestra cómo crear un TryExpression objeto que contiene una instrucción catch mediante el TryCatch método .

// Add the following directive to the file:
// using System.Linq.Expressions;

// A TryExpression object that has a Catch statement.
// The return types of the Try block and all Catch blocks must be the same.
TryExpression tryCatchExpr =
    Expression.TryCatch(
        Expression.Block(
            Expression.Throw(Expression.Constant(new DivideByZeroException())),
            Expression.Constant("Try block")
        ),
        Expression.Catch(
            typeof(DivideByZeroException),
            Expression.Constant("Catch block")
        )
    );

// The following statement first creates an expression tree,
// then compiles it, and then runs it.
// If the exception is caught,
// the result of the TryExpression is the last statement
// of the corresponding Catch statement.
Console.WriteLine(Expression.Lambda<Func<string>>(tryCatchExpr).Compile()());

// This code example produces the following output:
//
// Catch block
' Add the following directive to the file:
' Imports System.Linq.Expressions 

' A TryExpression object that has a Catch statement.
' The return types of the Try block and all Catch blocks must be the same.
Dim tryCatchExpr As TryExpression =
       Expression.TryCatch(
           Expression.Block(
               Expression.Throw(Expression.Constant(New DivideByZeroException())),
               Expression.Constant("Try block")
           ),
           Expression.Catch(
               GetType(DivideByZeroException),
               Expression.Constant("Catch block")
           )
       )

' The following statement first creates an expression tree,
' then compiles it, and then runs it.
' If the exception is caught, 
' the result of the TryExpression is the last statement 
' of the corresponding Catch statement.
Console.WriteLine(Expression.Lambda(Of Func(Of String))(tryCatchExpr).Compile()())

' This code example produces the following output:
'
' Catch block

Comentarios

El bloque body está protegido por el bloque try.

Los controladores constan de un conjunto de CatchBlock expresiones que pueden ser instrucciones catch o filtros.

El bloque de error se ejecuta si se produce una excepción.

El bloque finally se ejecuta independientemente de cómo sale el control del cuerpo.

Solo se puede proporcionar uno de los bloques de error o finalmente.

El tipo de valor devuelto del bloque try debe coincidir con el tipo de valor devuelto de las instrucciones catch asociadas.

Propiedades

Body

Obtiene la clase Expression que representa el cuerpo del bloque try.

CanReduce

Indica que el nodo se puede reducir a uno más simple. Si devuelve true, se puede llamar a Reduce() para generar el formulario reducido.

(Heredado de Expression)
Fault

Obtiene la clase Expression que representa el bloque de errores.

Finally

Obtiene la clase Expression que representa el bloque finally.

Handlers

Obtiene la colección de expresiones CatchBlock asociadas al bloque try.

NodeType

Devuelve el tipo de nodo de Expression.

Type

Obtiene el tipo estático de la expresión que Expression representa.

Métodos

Accept(ExpressionVisitor)

Envía la expresión al método de visita específico de este tipo de nodo. Por ejemplo, MethodCallExpression llama a VisitMethodCall(MethodCallExpression).

(Heredado de Expression)
Equals(Object)

Determina si el objeto especificado es igual que el objeto actual.

(Heredado de Object)
GetHashCode()

Sirve como la función hash predeterminada.

(Heredado de Object)
GetType()

Obtiene el Type de la instancia actual.

(Heredado de Object)
MemberwiseClone()

Crea una copia superficial del Object actual.

(Heredado de Object)
Reduce()

Reduce este nodo a una expresión más simple. Si CanReduce devuelve true, debería devolver una expresión válida. Este método puede devolver otro nodo que se debe reducir a su vez.

(Heredado de Expression)
ReduceAndCheck()

Reduce este nodo a una expresión más simple. Si CanReduce devuelve true, debería devolver una expresión válida. Este método puede devolver otro nodo que se debe reducir a su vez.

(Heredado de Expression)
ReduceExtensions()

Reduce la expresión a un tipo de nodo conocido (no es un nodo de extensión) o, si ya es un tipo conocido, solo devuelve la expresión.

(Heredado de Expression)
ToString()

Devuelve una representación textual de Expression.

(Heredado de Expression)
Update(Expression, IEnumerable<CatchBlock>, Expression, Expression)

Crea una nueva expresión que es como esta, pero usa el elemento secundario proporcionado. Si todos los elementos secundarios son iguales, devolverá esta expresión.

VisitChildren(ExpressionVisitor)

Reduce el nodo y, a continuación, llama al delegado del visitante en la expresión reducida. El método inicia una excepción si el nodo no es reducible.

(Heredado de Expression)

Se aplica a