__try_cast
Hinweis, das dieses Thema nur auf Version 1 von Managed Extensions for C++ gilt. Diese Syntax sollte nur verwendet werden, um Code zu erhalten, Version 1. Weitere Informationen finden Sie unter safe_cast zu Informationen über die Verwendung der entsprechenden Funktionen in der neuen Syntax.
Führt die angegebene Umwandlung oder löst eine Ausnahme aus, wenn die Umwandlung fehlschlägt.
__try_cast < type-id > ( expression )
Hinweise
Das Schlüsselwort (ähnlich __try_cast im Verhalten zu dynamic_cast) bietet Unterstützung für automatisch eine Ausnahme ausgelöst (vom Typ System::InvalidCastException) Umwandlungs wenn der angegebene Vorgang fehlschlägt.
Das __try_cast-Schlüsselwort kann während der Testphase der Anwendung verwendet werden und die möglichen Umwandlungs automatisch von Fehlern warnen.
Wenn Sie Managed Extensions for C++ portieren, ersetzen Sie __try_cast Aufrufe von safe_cast.
__try_cast funktioniert nicht mit Umwandlungen eines Zeigers auf Werttypen (__value), da es nicht möglich ist, die Typen zur Laufzeit zu überprüfen.
Beispiel
Im folgenden Beispiel wird versucht, einen Zeiger (von Derived-Typ) zu einem anderen MoreDerived der Zeiger (Typ) umzuwandeln. Wenn die Umwandlung fehlschlägt, wird sie mit dem catch-Block abgefangen und ausgegeben:
// 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*");
}
}
Output
Could not cast 'bp' to MoreDerived*