TryExpression TryExpression TryExpression TryExpression Class

定義

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
継承
TryExpressionTryExpressionTryExpressionTryExpression

次の例では、作成する方法、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

注釈

本体のブロックは、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.

Fault ブロックは、例外がスローされた場合に実行されます。The fault block runs if an exception is thrown.

制御が本体を終了する方法に関係なくブロックが最後に実行されます。The finally block runs regardless of how control exits the body.

エラーまたは finally ブロックの 1 つだけを指定することができます。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 Body Body Body

try ブロックの本体を表す Expression を取得します。Gets the Expression representing the body of the try block.

CanReduce CanReduce CanReduce 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.

(Inherited from Expression)
Fault Fault Fault Fault

fault ブロックを表す Expression を取得します。Gets the Expression representing the fault block.

Finally Finally Finally Finally

finally ブロックを表す Expression を取得します。Gets the Expression representing the finally block.

Handlers Handlers Handlers Handlers

try ブロックに関連付けられている CatchBlock 式のコレクションを取得します。Gets the collection of CatchBlock expressions associated with the try block.

NodeType NodeType NodeType NodeType

この Expression のノード型を返します。Returns the node type of this Expression.

Type Type Type Type

この Expression が表す式の静的な型を取得します。Gets the static type of the expression that this Expression represents.

メソッド

Accept(ExpressionVisitor) Accept(ExpressionVisitor) Accept(ExpressionVisitor) Accept(ExpressionVisitor)

このノード型の特定の Visit メソッドにデスパッチします。Dispatches to the specific visit method for this node type. たとえば、MethodCallExpressionVisitMethodCall(MethodCallExpression) を呼び出します。For example, MethodCallExpression calls the VisitMethodCall(MethodCallExpression).

(Inherited from Expression)
Equals(Object) Equals(Object) Equals(Object) Equals(Object)

指定したオブジェクトが、現在のオブジェクトと等しいかどうかを判断します。Determines whether the specified object is equal to the current object.

(Inherited from Object)
GetHashCode() GetHashCode() GetHashCode() GetHashCode()

既定のハッシュ関数として機能します。Serves as the default hash function.

(Inherited from Object)
GetType() GetType() GetType() GetType()

現在のインスタンスの Type を取得します。Gets the Type of the current instance.

(Inherited from Object)
MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

現在の Object の簡易コピーを作成します。Creates a shallow copy of the current Object.

(Inherited from Object)
Reduce() Reduce() Reduce() 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.

(Inherited from Expression)
ReduceAndCheck() ReduceAndCheck() ReduceAndCheck() 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.

(Inherited from Expression)
ReduceExtensions() ReduceExtensions() ReduceExtensions() ReduceExtensions()

式を既知のノード型 (拡張ノードではない型) に単純化し、それが既に既知の型である場合は単に式を返します。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.

(Inherited from Expression)
ToString() ToString() ToString() ToString()

Expression のテキスト表現を返します。Returns a textual representation of the Expression.

(Inherited from Expression)
Update(Expression, IEnumerable<CatchBlock>, Expression, Expression) Update(Expression, IEnumerable<CatchBlock>, Expression, Expression) Update(Expression, IEnumerable<CatchBlock>, 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) VisitChildren(ExpressionVisitor) VisitChildren(ExpressionVisitor) VisitChildren(ExpressionVisitor)

ノードを単純化し、単純化された式の visitor デリゲートを呼び出します。Reduces the node and then calls the visitor delegate on the reduced expression. ノードを単純化できない場合、このメソッドは例外をスローします。The method throws an exception if the node is not reducible.

(Inherited from Expression)

適用対象