Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Anmärkning
Det här innehållet skrivs om med behörighet från Pearson Education, Inc. från Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries, 2nd Edition. Den utgåvan publicerades 2008, och boken har sedan dess reviderats helt i den tredje utgåvan. En del av informationen på den här sidan kan vara inaktuell.
I det här avsnittet beskrivs de standardfel som tillhandahålls av ramverket och information om deras användning. Listan är inte på något sätt fullständig. Se referensdokumentationen för .NET Framework för användning av andra framework-undantagstyper.
Undantag och Systemundantag
❌ Kasta INTE System.Exception eller System.SystemException.
❌ Fånga System.Exception eller System.SystemException INTE i ramverkskod, om du inte tänker återsläppa.
❌ UNDVIK att fånga System.Exception eller System.SystemException, förutom i undantagshanterare på toppnivå.
ApplicationException
❌ Släng inte och härled inte från ApplicationException.
InvalidOperationException
✔️ Kasta ett InvalidOperationException om objektet är i ett olämpligt tillstånd.
ArgumentException, ArgumentNullException och ArgumentOutOfRangeException
✔️ GÖR kasta ArgumentException eller någon av dess undertyper om dåliga argument passerar till en medlem. Föredrar den mest härledda undantagstypen, om tillämpligt.
✔️ Ange egenskapen ParamName när du kastar en av underklasserna av ArgumentException.
Den här egenskapen representerar namnet på parametern som orsakade att undantaget utlöstes. Observera att egenskapen kan anges med någon av konstruktorns överlagringar.
✔️ Använd value för namnet på den implicita värdeparametern för egenskapsuppsättningar.
NullReferenceException, IndexOutOfRangeException och AccessViolationException
❌ Tillåt INTE offentligt anropsbara API:er att uttryckligen eller implicit kasta NullReferenceException, AccessViolationExceptioneller IndexOutOfRangeException. Dessa undantag reserveras av exekveringsmotorn och skapas i de flesta fall då en bugg förekommer.
Gör argumentkontroll för att undvika att utlösa dessa undantag. Om du utlöser dessa undantag visas implementeringsinformation om din metod som kan ändras över tid.
StackOverflowException
❌ Kasta INTE uttryckligen StackOverflowException. Undantaget bör uttryckligen endast genereras av CLR.
❌ Fånga StackOverflowExceptionINTE .
Det är nästan omöjligt att skriva hanterad kod som förblir konsekvent vid förekomst av godtyckliga stacköverflöden. De ohanterade delarna av CLR förblir stabila genom att använda avsökningar för att flytta stacköversvämningar till väldefinierade platser i stället för att dra sig tillbaka från godtyckliga stacköversvämningar.
OutOfMemoryException
❌ Kasta INTE uttryckligen OutOfMemoryException. Det här undantaget ska endast genereras av CLR-infrastrukturen.
ComException, SEHException och ExecutionEngineException
❌ Kasta INTE uttryckligen COMException, ExecutionEngineExceptionoch SEHException. Dessa undantag ska endast genereras av CLR-infrastrukturen.
Portioner © 2005, 2009 Microsoft Corporation. Alla rättigheter reserverade.
Återtryckt med tillstånd från Pearson Education, Inc. från Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries, 2nd Edition av Krzysztof Cwalina och Brad Abrams, publicerades den 22 oktober 2008 av Addison-Wesley Professional som en del av Microsoft Windows Development Series.