C++/CLI és Managed C++

Kivételkezelés

Kivételkezelés

A kivételek kiváltására és kezelésére használt kulcsszavak megegyeznek a hagyományos C++-éval, de itt is vannak plusz dolgok.

Felügyelt osztályok esetén a kivételek mind a System::Exception ősosztályból származnak. Bevezetésre került a kivételek kezelésére egy új blokk, a finally blokk. Ezt a blokkot a catch blokk után kell írni, és ebben a blokkban található utasítások minden esetben végrehajtódnak, a kivétel dobásától függetlenül. Ez hasznos az olyan esetekben, ha például egy fájl olvasása közben kivétel dobódik, és ilyenkor a finally blokkban lelehet zárni a fájlt.

Példa:

ref class MyException : public System::Exception { }; void f() { throw new MyException; } int main() { try { f(); } catch (MyException *e) { System::Console::WriteLine("in catch"); System::Console::WriteLine(e->GetType()); } finally { System::Console::WriteLine("in finally"); } }

A futtatás eredménye:

in catch MyException in finally