TryExpression Sınıf

Tanım

Try/catch/finally/fault bloğunu temsil eder.

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
Devralma
TryExpression

Örnekler

Aşağıdaki örnekte yöntemini kullanarak catch deyimi içeren bir TryExpression nesnenin nasıl oluşturulacağı gösterilmektedir TryCatch .

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

Açıklamalar

Gövde bloğu try bloğu tarafından korunur.

İşleyiciler, catch deyimleri veya filtreler olabilecek bir dizi CatchBlock ifadeden oluşur.

Özel durum oluşturulursa hata bloğu çalışır.

Son blok, denetimin gövdeden nasıl çıktığına bakılmaksızın çalışır.

Yalnızca hata veya son olarak bloklardan biri sağlanabilir.

Try bloğunun dönüş türü, ilişkili catch deyimlerinin dönüş türüyle eşleşmelidir.

Özellikler

Body

Expression Try bloğunun gövdesini temsil eden öğesini alır.

CanReduce

Düğümün daha basit bir düğüme indirgenebileceğini gösterir. Bu true döndürürse, azaltılmış formu oluşturmak için Reduce() çağrılabilir.

(Devralındığı yer: Expression)
Fault

Hata bloğunu Expression temsil eden öğesini alır.

Finally

Finally bloğunu Expression temsil eden öğesini alır.

Handlers

Try bloğuyla ilişkili ifade koleksiyonunu CatchBlock alır.

NodeType

Bu Expressiondüğüm türünü döndürür.

Type

Bunun Expression temsil ettiği ifadenin statik türünü alır.

Yöntemler

Accept(ExpressionVisitor)

Bu düğüm türü için belirli bir ziyaret yöntemine gönderilir. Örneğin, MethodCallExpression öğesini çağırır VisitMethodCall(MethodCallExpression).

(Devralındığı yer: Expression)
Equals(Object)

Belirtilen nesnenin geçerli nesneye eşit olup olmadığını belirler.

(Devralındığı yer: Object)
GetHashCode()

Varsayılan karma işlevi işlevi görür.

(Devralındığı yer: Object)
GetType()

Type Geçerli örneğini alır.

(Devralındığı yer: Object)
MemberwiseClone()

Geçerli Objectöğesinin sığ bir kopyasını oluşturur.

(Devralındığı yer: Object)
Reduce()

Bu düğümü daha basit bir ifadeye küçültür. CanReduce true döndürürse, bu geçerli bir ifade döndürmelidir. Bu yöntem, azaltması gereken başka bir düğüm döndürebilir.

(Devralındığı yer: Expression)
ReduceAndCheck()

Bu düğümü daha basit bir ifadeye küçültür. CanReduce true döndürürse, bu geçerli bir ifade döndürmelidir. Bu yöntem, azaltması gereken başka bir düğüm döndürebilir.

(Devralındığı yer: Expression)
ReduceExtensions()

İfadeyi bilinen bir düğüm türüne (uzantı düğümü değildir) azaltır veya zaten bilinen bir türse yalnızca ifadeyi döndürür.

(Devralındığı yer: Expression)
ToString()

öğesinin metinsel bir gösterimini Expressiondöndürür.

(Devralındığı yer: Expression)
Update(Expression, IEnumerable<CatchBlock>, Expression, Expression)

Bunun gibi, ancak sağlanan alt öğeleri kullanarak yeni bir ifade oluşturur. Tüm alt öğeler aynıysa bu ifade döndürülecektir.

VisitChildren(ExpressionVisitor)

Düğümü azaltır ve ardından azaltılmış ifadede ziyaretçi temsilcisini çağırır. Yöntem, düğüm azaltılabilir değilse bir özel durum oluşturur.

(Devralındığı yer: Expression)

Şunlara uygulanır