Kivételosztály és tulajdonságok

Az Exception osztály az az alaposztály, amelytől a kivételek öröklődnek. Az osztályhierarchia például InvalidCastException a következő:

Object
  Exception
    SystemException
      InvalidCastException

Az Exception osztály a következő tulajdonságokkal rendelkezik, amelyek megkönnyítik a kivétel megértését.

Ingatlan neve Leírás
Data Olyan IDictionary , amely tetszőleges adatokat tárol kulcs-érték párokban.
HelpLink Tárolhat egy URL-t vagy URN-t, amely egy súgófájlra mutat, és részletes információt nyújt a kivétel okáról.
InnerException Ez a tulajdonság számos kivétel létrehozásához és megőrzéséhez használható a kivételkezelés során. Ezzel egy korábban kifogott kivételeket tartalmazó új kivételt hozhat létre. Az eredeti kivételt a tulajdonság második kivétele InnerException rögzítheti, így a második kivételt kezelő kód megvizsgálhatja a további információkat. Tegyük fel például, hogy van egy metódusa, amely nem megfelelően formázott argumentumot fogad. A kód megpróbálja beolvasni az argumentumot, de a rendszer kivételt jelez. A metódus elkapja a kivételt, és dob egy FormatException. Annak érdekében, hogy a hívó meg tudja állapítani a kivétel okát, néha kívánatos, hogy egy metódus elkapjon egy kivételt, amelyet egy segítő rutin dob ki, majd egy a bekövetkezett hibára jellemzőbb kivételt dobjon. Létre lehet hozni egy új és értelmesebb kivételt, amelyben a belső kivételhivatkozás az eredeti kivételre állítható be. Ezt az értelmesebb kivételt ezután a hívónak is ki lehet dobni. Vegye figyelembe, hogy ezzel a funkcióval összekapcsolt kivételek sorozatát hozhatja létre, amelyek az elsőként kidobott kivétellel végződnek.
Message A kivétel okának részleteit tartalmazza.
Source Lekéri vagy beállítja az alkalmazás vagy a hibát okozó objektum nevét.
StackTrace Tartalmaz egy veremkövetést, amelynek segítségével megállapítható, hol történt hiba. A stack nyom tartalmazza a forrásfájl nevét és a programsor számát, ha rendelkezésre állnak hibakeresési információk.

A legtöbb osztály, amely örökli a Exception-t, nem valósít meg további tagokat, és nem nyújt további funkcionalitást; egyszerűen örököl a Exception-ből. Ezért a kivétel legfontosabb információi megtalálhatók a kivételosztályok hierarchiájában, a kivétel neve és a kivételben található információk között.

Azt javasoljuk, hogy csak olyan objektumokat dobjon el és fogjon, amelyek a Exception-ból származnak, de kivételként bármely, a Object osztályból származó objektumot eldobhatja. Vegye figyelembe, hogy nem minden nyelv támogatja az Exception-ből nem származó objektumok dobását és elkapását.

Lásd még