Kurzusok
/
C#
C#
/
Tanterv
/
Felhasználó által definiált kivételek
Fe

Felhasználó által definiált kivételek ebben a kurzusban: C#

1 feladat

A(z) Felhasználó által definiált kivételek fogalomról

A felhasználó által definiált kivétel minden olyan osztály, amelyet a saját kódodban definiálsz, és amely a System.Exception-ből származik. Az osztályöröklés minden szabálya érvényes rá, de emellett a fordító és a nyelvi futtatókörnyezet különleges módon kezeli az ilyen osztályokat: a példányaikat a szokásos vezérlési folyamon kívül is dobhatod és elkaphatod, ahogy arról az exceptions feladatban szó volt. A felhasználó által definiált kivételeket ugyanúgy használhatod, mint a futtatókörnyezet vagy a Microsoft Base Class Library kivételeit.

Ez a különleges bánásmód csak az Exception-ből származó osztályokra érvényes. Más típusú példányt nem dobhatsz.

A felhasználó által definiált kivételeket gyakran arra használjuk, hogy plusz információt, például egy üzenetet és más fontos adatokat vigyenek magukkal, amelyek az elkapó rutinok számára elérhetővé válnak. Mindez aztán naplóba kerülhet, jelezhető a felhasználónak, vagy éppen egy újrapróbálkozási műveletben hasznosulhat. A System.Exception kényelmes adattagokkal és megfelelő konstruktorokkal rendelkezik, amelyek egy üzenetet és a „belső” kivételt tárolják.

A szokás szerint a kivételosztályok neve „Exception”-re végződik, például MyTerribleException.

Bár a felhasználó által definiált kivételekkel harmadik féltől származó kivételeket becsomagolni és kiegészíteni gyakran látott minta, az az általános tanács, hogy ezen a felhasználási eseten kívül a saját kódodban ne élj velük túl bőkezűen. Antimintának számít. Ezzel a nézettel szemben is felhozhatók érvek, és az álláspontok mindkét oldalát megnézheted ebben a Stack Exchange-bejegyzésben.

Ez a cikk jó bevezető a felhasználó által definiált kivételekhez.

A kivételek létrehozásáról és dobásáról szóló útmutatójuk részeként a .NET csapata azt javasolja, hogy a felhasználó által definiált kivételeknek legyen néhány kényelmi konstruktoruk. A legtöbb esetben az alábbi kombináció megfelelő.

public class IncompleteExerciseException : System.Exception
{
    public IncompleteExerciseException() : base() { }
    public IncompleteExerciseException(string message) : base(message) { }
    public IncompleteExerciseException(string message, System.Exception inner) : base(message, inner) { }
}
Szerkesztés GitHubon A hivatkozás új ablakban vagy lapon nyílik meg

Tanuld meg a(z) Felhasználó által definiált kivételek fogalmat