TryExpression Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Představuje blok 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
- Dědičnost
Příklady
Následující příklad ukazuje, jak vytvořit TryExpression objekt, který obsahuje příkaz catch pomocí TryCatch metody .
// 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
Poznámky
Blok těla je chráněn blokem try.
Obslužné rutiny se skládají ze sady výrazů CatchBlock , které mohou být buď příkazy catch, nebo filtry.
Pokud dojde k výjimce, spustí se blok selhání.
Poslední blok se spustí bez ohledu na to, jak ovládací prvek opustí tělo.
Lze zadat pouze jeden blok chyby nebo nakonec.
Návratový typ bloku try musí odpovídat návratovém typu všech přidružených příkazů catch.
Vlastnosti
Body |
Expression Získá představující tělo bloku try. |
CanReduce |
Označuje, že uzel lze zmenšit na jednodušší uzel. Pokud se vrátí hodnota true, lze voláním funkce Reduce() vytvořit redukovanou formu. (Zděděno od Expression) |
Fault |
Expression Získá představující blok chyby. |
Finally |
Expression Získá představující blok finally. |
Handlers |
Získá kolekci výrazů přidružených CatchBlock k bloku try. |
NodeType |
Vrátí typ uzlu tohoto Expressiontypu . |
Type |
Získá statický typ výrazu, který představuje Expression . |
Metody
Accept(ExpressionVisitor) |
Odesílá do konkrétní metody visit pro tento typ uzlu. Například MethodCallExpression volá VisitMethodCall(MethodCallExpression). (Zděděno od Expression) |
Equals(Object) |
Určí, zda se zadaný objekt rovná aktuálnímu objektu. (Zděděno od Object) |
GetHashCode() |
Slouží jako výchozí hashovací funkce. (Zděděno od Object) |
GetType() |
Získá aktuální Type instanci. (Zděděno od Object) |
MemberwiseClone() |
Vytvoří mělkou kopii aktuálního Objectsouboru . (Zděděno od Object) |
Reduce() |
Zmenší tento uzel na jednodušší výraz. Pokud CanReduce vrátí hodnotu true, měl by vrátit platný výraz. Tato metoda může vrátit jiný uzel, který musí být redukován. (Zděděno od Expression) |
ReduceAndCheck() |
Zmenší tento uzel na jednodušší výraz. Pokud CanReduce vrátí hodnotu true, měl by vrátit platný výraz. Tato metoda může vrátit jiný uzel, který musí být redukován. (Zděděno od Expression) |
ReduceExtensions() |
Zmenšuje výraz na známý typ uzlu (který není uzel rozšíření) nebo pouze vrátí výraz, pokud už je známým typem. (Zděděno od Expression) |
ToString() |
Vrátí textovou reprezentaci Expression. (Zděděno od Expression) |
Update(Expression, IEnumerable<CatchBlock>, Expression, Expression) |
Vytvoří nový výraz, který je podobný tomuto, ale používá zadané podřízené položky. Pokud jsou všechny podřízené položky stejné, vrátí tento výraz. |
VisitChildren(ExpressionVisitor) |
Zmenší uzel a pak zavolá delegáta návštěvníka na výraz redukce. Metoda vyvolá výjimku, pokud uzel není reduciovatelný. (Zděděno od Expression) |