__try_cast
Hinweis Dieses Thema gilt nur für Version 1 von Managed Extensions für C++. Diese Syntax sollte nur verwendet werden, um Code von Version 1 beizubehalten. Informationen über die Verwendung der entsprechenden Funktionen in der neuen Syntax finden Sie unter safe_cast (Komponentenerweiterungen für C++).
Führt die angegebene Umwandlung aus oder löst eine Ausnahme aus, wenn bei der Umwandlung ein Fehler auftritt.
__try_cast < type-id > ( expression )
Hinweise
Das __try_cast-Schlüsselwort (mit ähnlichem Verhalten wie dynamic_cast) unterstützt das automatische Auslösen einer Ausnahme (vom Typ System::InvalidCastException), wenn bei der angegebenen Umwandlungsoperation ein Fehler auftritt.
Das __try_cast-Schlüsselwort kann während der Testphase Ihrer Anwendung verwendet werden. Bei möglichen Umwandlungsfehlern gibt es automatisch eine Warnung aus.
Wenn Sie Managed Extensions for C++ portieren, ersetzen Sie __try_cast-Aufrufe durch safe_cast (Komponentenerweiterungen für C++).
__try_cast funktioniert nicht mit Umwandlungen eines Zeigers in Werttypen (__value), da es nicht möglich ist, die Typen zur Laufzeit zu überprüfen.
Beispiel
Im folgenden Beispiel wird versucht, einen Zeiger (vom Typ Derived) in einen anderen Zeiger (vom Typ MoreDerived) umzuwandeln. Wenn bei der Umwandlung ein Fehler auftritt, wird er vom catch-Block abgefangen und gemeldet:
// 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*");
}
}
Ausgabe
Could not cast 'bp' to MoreDerived*