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 CatchBlock výrazů, které mohou být buď příkazy catch, nebo filtry.
Blok selhání se spustí, pokud dojde k výjimce.
Nakonec se blok spustí bez ohledu na to, jak ovládací prvek ukončí tělo.
Lze zadat pouze jeden z bloků chyb nebo bloků.
Návratový typ bloku try se musí shodovat s návratem všech přidružených příkazů catch.
Vlastnosti
| Name | Description |
|---|---|
| Body |
Získá reprezentaci Expression těla bloku try. |
| CanReduce |
Označuje, že uzel lze snížit na jednodušší uzel. Pokud se vrátí hodnota true, lze volat Reduce() k vytvoření snížené formy. (Zděděno od Expression) |
| Fault |
Získá reprezentaci Expression bloku selhání. |
| Finally |
Získá reprezentaci Expression konečně bloku. |
| Handlers |
Získá kolekci výrazů přidružených CatchBlock k bloku try. |
| NodeType |
Vrátí typ uzlu tohoto Expression. |
| Type |
Získá statický typ výrazu, který představuje Expression . |
Metody
| Name | Description |
|---|---|
| Accept(ExpressionVisitor) |
Odešle konkrétní metodu návštěvy pro tento typ uzlu. MethodCallExpression Například volá .VisitMethodCall(MethodCallExpression) (Zděděno od Expression) |
| Equals(Object) |
Určuje, zda je zadaný objekt roven aktuálnímu objektu. (Zděděno od Object) |
| GetHashCode() |
Slouží jako výchozí funkce hash. (Zděděno od Object) |
| GetType() |
Získá Type aktuální instance. (Zděděno od Object) |
| MemberwiseClone() |
Vytvoří mělkou kopii aktuálního Object. (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ý se musí snížit. (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ý se musí snížit. (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 je již 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žije zadané podřízené položky. Pokud jsou všechny podřízené položky stejné, vrátí tento výraz. |
| VisitChildren(ExpressionVisitor) |
Zmenší uzel a potom zavolá delegáta návštěvníka na zkrácený výraz. Metoda vyvolá výjimku, pokud uzel není reducible. (Zděděno od Expression) |