TryExpression Класс

Определение

Представляет блок try/catch/finally/fault.Represents a try/catch/finally/fault block.

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
Наследование
TryExpression

Примеры

В следующем примере показано, как создать TryExpression объект, содержащий оператор catch, TryCatch с помощью метода.The following example demonstrates how to create a TryExpression object that contains a catch statement by using the TryCatch method.

// 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

Комментарии

Блок Body защищен блоком try.The body block is protected by the try block.

Обработчики состоят из набора CatchBlock выражений, которые могут быть либо блоками операторов, либо фильтрами.The handlers consist of a set of CatchBlock expressions that can be either catch statements or filters.

Блок сбоя выполняется при возникновении исключения.The fault block runs if an exception is thrown.

Блок finally выполняется независимо от того, как элемент управления выходит из тела.The finally block runs regardless of how control exits the body.

Можно указать только один из блоков fault или finally.Only one of fault or finally blocks can be supplied.

Возвращаемый тип блока try должен соответствовать возвращаемому типу всех связанных операторов catch.The return type of the try block must match the return type of any associated catch statements.

Свойства

Body

Получает объект Expression, представляющий тело блока try.Gets the Expression representing the body of the try block.

CanReduce

Указывает, что узел можно сократить до более простого.Indicates that the node can be reduced to a simpler node. Если возвращается значение true, для получения сокращенной формы можно вызвать Reduce().If this returns true, Reduce() can be called to produce the reduced form.

(Унаследовано от Expression)
Fault

Получает объект Expression, представляющий тело блока fault.Gets the Expression representing the fault block.

Finally

Получает объект Expression, представляющий тело блока finally.Gets the Expression representing the finally block.

Handlers

Получает коллекцию выражений CatchBlock, связанных с блоком try.Gets the collection of CatchBlock expressions associated with the try block.

NodeType

Возвращает тип узла данного выражения Expression.Returns the node type of this Expression.

Type

Получает статичный тип выражения, представленного этим выражением Expression.Gets the static type of the expression that this Expression represents.

Методы

Accept(ExpressionVisitor)

Отправляет в конкретный метод Visit для данного типа узла.Dispatches to the specific visit method for this node type. Например, объект MethodCallExpression вызывает метод VisitMethodCall(MethodCallExpression).For example, MethodCallExpression calls the VisitMethodCall(MethodCallExpression).

(Унаследовано от Expression)
Equals(Object)

Определяет, равен ли заданный объект текущему объекту.Determines whether the specified object is equal to the current object.

(Унаследовано от Object)
GetHashCode()

Служит хэш-функцией по умолчанию.Serves as the default hash function.

(Унаследовано от Object)
GetType()

Возвращает объект Type для текущего экземпляра.Gets the Type of the current instance.

(Унаследовано от Object)
MemberwiseClone()

Создает неполную копию текущего объекта Object.Creates a shallow copy of the current Object.

(Унаследовано от Object)
Reduce()

Преобразует данный узел в более простое выражение.Reduces this node to a simpler expression. Если CanReduce возвращает значение true, данный метод должен вернуть допустимое выражение.If CanReduce returns true, this should return a valid expression. Данный метод может вернуть другой узел, который нужно будет преобразовать еще раз.This method can return another node which itself must be reduced.

(Унаследовано от Expression)
ReduceAndCheck()

Преобразует данный узел в более простое выражение.Reduces this node to a simpler expression. Если CanReduce возвращает значение true, данный метод должен вернуть допустимое выражение.If CanReduce returns true, this should return a valid expression. Данный метод может вернуть другой узел, который нужно будет преобразовать еще раз.This method can return another node which itself must be reduced.

(Унаследовано от Expression)
ReduceExtensions()

Упрощает выражение до известного типа узла (не являющегося узлом Extension) или возвращает выражение, если оно имеет известный тип.Reduces the expression to a known node type (that is not an Extension node) or just returns the expression if it is already a known type.

(Унаследовано от Expression)
ToString()

Возвращает текстовое представление текущего объекта Expression.Returns a textual representation of the Expression.

(Унаследовано от Expression)
Update(Expression, IEnumerable<CatchBlock>, Expression, Expression)

Создает новое выражение, идентичное данному, но использующее предоставленные дочерние элементы.Creates a new expression that is like this one, but using the supplied children. Если все дочерние элементы идентичны, возвращается данное выражение.If all of the children are the same, it will return this expression.

VisitChildren(ExpressionVisitor)

Упрощает узел и вызывает делегат-посетитель для преобразованного выражения.Reduces the node and then calls the visitor delegate on the reduced expression. Данный метод создает исключение, если узел невозможно упростить.The method throws an exception if the node is not reducible.

(Унаследовано от Expression)

Применяется к