Megosztás a következőn keresztül:


Standard kivételtípusok használata

Megjegyzés:

Ezt a tartalmat a Pearson Education, Inc. engedélyével nyomtatjuk újra a Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries, 2nd Edition című műből. Ezt a kiadást 2008-ban adták ki, és a könyvet azóta teljesen átdolgozták a harmadik kiadásban. Előfordulhat, hogy az oldalon található információk némelyike elavult.

Ez a szakasz a keretrendszer által biztosított standard kivételeket és azok használatának részleteit ismerteti. A lista egyáltalán nem teljes. Tekintse meg a .NET-keretrendszer referenciadokumentációját más keretrendszerkivétel-típusok használatára vonatkozóan.

Kivétel és SystemException

❌ NE dobja System.Exception vagy System.SystemException.

❌ NE kapja meg System.Exception vagy System.SystemException keretkódban, kivéve, ha újra meg szeretné ismételni.

❌ KERÜLJE System.Exception vagy System.SystemException elkapását a legfelső szintű kivételkezelők kivételével.

ApplicationException

❌NE dobja el vagy vezesse le ApplicationException-ból.

Érvénytelen műveletkivétel

✔️ KÖTELEZŐEN dobjon egy InvalidOperationException, ha az objektum nem megfelelő állapotban van.

ArgumentException, ArgumentNullException és ArgumentOutOfRangeException

✔️ DO dobás ArgumentException vagy annak egyik altípusa, ha a rendszer rossz argumentumokat ad át egy tagnak. Ha szükséges, válassza a legelvezetettebb kivételtípust.

✔️ Állítsa be a ParamName tulajdonságot, amikor az ArgumentException egyik alosztályát dobja.

Ez a tulajdonság annak a paraméternek a nevét jelöli, amely a kivételt okozta. Vegye figyelembe, hogy a tulajdonság egyik konstruktor túlterheléssel állítható be.

✔️ A tulajdonság-beállítók implicit értékparaméterének neveként használja a value jelölést.

NullReferenceException, IndexOutOfRangeException és AccessViolationException

❌ NE engedélyezze a nyilvánosan hívható API-k számára, hogy explicit módon vagy implicit módon dobjanak NullReferenceException, AccessViolationExceptionvagy IndexOutOfRangeException. Ezeket a kivételeket a végrehajtási motor fenntartja és elveti, és a legtöbb esetben hiba jelenik meg.

Az argumentum-ellenőrzéssel elkerülheti a kivételek kivetését. Ezek a kivételek a metódus olyan implementációs részleteit teszik elérhetővé, amelyek idővel változhatnak.

StackOverflowException

❌ NE dobja StackOverflowExceptionexplicit módon . A kivételt csak a CLR-nek kell explicit módon kivennie.

❌ NE kapd el StackOverflowException.

Szinte lehetetlen olyan felügyelt kódot írni, amely konzisztens marad tetszőleges verem-túlcsordulások jelenlétében. A CLR nem felügyelt részei következetesek maradnak azáltal, hogy szondákkal áthelyezik a veremtúlcsordulásokat jól meghatározott helyekre, ahelyett, hogy tetszőleges túlcsordulásoknál kihátrálnának.

OutOfMemoryException

❌ NE dobja OutOfMemoryExceptionexplicit módon . Ezt a kivételt csak a CLR infrastruktúra dobhatja.

ComException, SEHException és ExecutionEngineException

❌ NE dobja ki COMException, ExecutionEngineException és SEHException kifejezetten. Ezeket a kivételeket csak a CLR-infrastruktúra vetheti ki.

© Részletek 2005, 2009 Microsoft Corporation. Minden jog fenntartva.

Újranyomva a Pearson Education, Inc. engedélyével, Krzysztof Cwalina és Brad Abrams Framework Design Guidelines: Konvenciók, Idiomák és Minták az Újrafelhasználható .NET Könyvtárak Számára, 2. kiadás című könyvéből, közzétéve 2008. október 22-én, a Addison-Wesley Professional által, a Microsoft Windows Fejlesztési Sorozat részeként.

Lásd még