__try_cast
Publikováno: duben 2016
Poznámka Toto téma se týká pouze verze 1 spravovaných rozšíření jazyka C++. Tato syntaxe by měla sloužit pouze k udržování kódu verze 1. Viz safe_cast (C++ Component Extensions) informace o použití ekvivalentní funkce v nové syntaxi.
Provede zadané přetypování nebo vyvolá výjimku, pokud přetypování selže.
Syntaxe
__try_cast <
type-id
>
(
expression
)
Poznámky
__try_cast Klíčové slovo (podobně jako v chování dynamic_cast) poskytuje podporu pro automaticky vyvolání výjimky (typu System::InvalidCastException) vždy, když dojde k selhání operace zadané přetypování.
__try_cast Během fáze testování vaší aplikace, automaticky upozorňování na selhání možné přetypování lze použít klíčové slovo.
Když portování spravovaných rozšíření jazyka C++, vyměňte __try_cast volání s safe_cast (C++ Component Extensions).
__try_cast nefunguje v přetypování ukazatele na typy hodnot (__value), protože není možné zkontrolovat typy za běhu.
Příklad
V následujícím příkladu, pokus o přetypovat ukazatel (z Derived typu) k jinému ukazateli (z MoreDerived typu) se provádí. Pokud přetypování selže, je zachycena a hlášené blok catch:
// keyword__try_cast.cpp
// compile with: /clr:oldSyntax
#using <mscorlib.dll>
using namespace System;
__gc struct Base {};
__gc struct Derived : Base {};
__gc struct MoreDerived : Derived {};
int main() {
Base*bp = new Derived;
try {
MoreDerived* mdp = __try_cast<MoreDerived*>(bp);
}
catch(System::InvalidCastException*) {
Console::WriteLine("Could not cast 'bp' to MoreDerived*");
}
}
Výstup
Could not cast 'bp' to MoreDerived*