Markieren Sie das Kontrollkästchen Englisch, um die englische Version dieses Artikels anzuzeigen. Sie können den englischen Text auch in einem Popup-Fenster einblenden, indem Sie den Mauszeiger über den Text bewegen.
Übersetzung
Englisch
Diese Dokumentation wurde archiviert und wird nicht länger gepflegt.

Exception-Klasse

Stellt Fehler dar, die beim Ausführen einer Anwendung auftreten.

Namespace:  System
Assembly:  mscorlib (in mscorlib.dll)

[SerializableAttribute]
[ComVisibleAttribute(true)]
[ClassInterfaceAttribute(ClassInterfaceType.None)]
public class Exception : ISerializable, _Exception

Der Exception-Typ macht die folgenden Member verfügbar.

  NameBeschreibung
Öffentliche MethodeUnterstützt von XNA Frameworkc18k6c59.PortableClassLibrary(de-de,VS.100).gifException()Initialisiert eine neue Instanz der Exception-Klasse.
Öffentliche MethodeUnterstützt von XNA Frameworkc18k6c59.PortableClassLibrary(de-de,VS.100).gifException(String)Initialisiert eine neue Instanz der Exception-Klasse mit einer angegebenen Fehlermeldung.
Geschützte MethodeException(SerializationInfo, StreamingContext)Initialisiert eine neue Instanz der Exception-Klasse mit serialisierten Daten.
Öffentliche MethodeUnterstützt von XNA Frameworkc18k6c59.PortableClassLibrary(de-de,VS.100).gifException(String, Exception)Initialisiert eine neue Instanz der Exception-Klasse mit einer angegebenen Fehlermeldung und einem Verweis auf die innere Ausnahme, die diese Ausnahme verursacht hat.
Zum Seitenanfang

  NameBeschreibung
Öffentliche EigenschaftDataRuft eine Auflistung von Schlüssel-Wert-Paaren ab, die zusätzliche benutzerdefinierte Informationen zu der Ausnahme bereitstellen.
Öffentliche EigenschaftHelpLinkRuft einen Link zur Hilfedatei ab, die dieser Ausnahme zugeordnet ist, oder legt einen Link fest.
Geschützte EigenschaftUnterstützt von XNA Frameworkc18k6c59.PortableClassLibrary(de-de,VS.100).gifHResultRuft HRESULT ab oder legt HRESULT fest. Dies ist ein codierter Wert, der einer bestimmten Ausnahme zugeordnet ist.
Öffentliche EigenschaftUnterstützt von XNA Frameworkc18k6c59.PortableClassLibrary(de-de,VS.100).gifInnerExceptionRuft die Exception-Instanz ab, die die aktuelle Ausnahme verursachte.
Öffentliche EigenschaftUnterstützt von XNA Frameworkc18k6c59.PortableClassLibrary(de-de,VS.100).gifMessageRuft eine Meldung ab, die die aktuelle Ausnahme beschreibt.
Öffentliche EigenschaftSourceGibt den Namen der Anwendung oder des Objekts zurück, das den Fehler verursacht hat, oder legt diesen fest.
Öffentliche EigenschaftUnterstützt von XNA Frameworkc18k6c59.PortableClassLibrary(de-de,VS.100).gifStackTraceRuft eine Zeichenfolgendarstellung der unmittelbaren Frames in der Aufrufliste ab.
Öffentliche EigenschaftTargetSiteRuft die Methode ab, die die aktuelle Ausnahme auslöst.
Zum Seitenanfang

  NameBeschreibung
Öffentliche MethodeUnterstützt von XNA Frameworkc18k6c59.PortableClassLibrary(de-de,VS.100).gifEquals(Object) Bestimmt, ob das übergegebene Object und das aktuelle Object gleich sind. (Von Object geerbt.)
Geschützte MethodeUnterstützt von XNA Frameworkc18k6c59.PortableClassLibrary(de-de,VS.100).gifFinalize Gibt einem Objekt Gelegenheit, Ressourcen freizugeben und andere Bereinigungen durchzuführen, bevor es von der Garbage Collection freigegeben wird. (Von Object geerbt.)
Öffentliche MethodeUnterstützt von XNA Frameworkc18k6c59.PortableClassLibrary(de-de,VS.100).gifGetBaseExceptionGibt beim Überschreiben in einer abgeleiteten Klasse eine Exception zurück, die die ursprüngliche Ursache für eine oder mehrere nachfolgende Ausnahmen ist.
Öffentliche MethodeUnterstützt von XNA Frameworkc18k6c59.PortableClassLibrary(de-de,VS.100).gifGetHashCodeFungiert als Hashfunktion für einen bestimmten Typ. (Von Object geerbt.)
Öffentliche MethodeGetObjectDataLegt beim Überschreiben in einer abgeleiteten Klasse die SerializationInfo mit Informationen über die Ausnahme fest.
Öffentliche MethodeUnterstützt von XNA Frameworkc18k6c59.PortableClassLibrary(de-de,VS.100).gifGetTypeRuft den Laufzeittyp der aktuellen Instanz ab.

In XNA Framework 3.0 wird dieser Member von Object.GetType().


In   wird dieser Member von Object.GetType().
Geschützte MethodeUnterstützt von XNA Frameworkc18k6c59.PortableClassLibrary(de-de,VS.100).gifMemberwiseCloneErstellt eine flache Kopie des aktuellen Object. (Von Object geerbt.)
Öffentliche MethodeUnterstützt von XNA Frameworkc18k6c59.PortableClassLibrary(de-de,VS.100).gifToStringErstellt eine Zeichenfolgenentsprechung der aktuellen Ausnahme und gibt diese zurück. (Überschreibt Object.ToString().)
Zum Seitenanfang

  NameBeschreibung
Geschütztes EreignisSerializeObjectStateTritt auf, wenn eine Ausnahme serialisiert wird, um ein Ausnahmezustandsobjekt zu erstellen, das serialisierte Daten für die Ausnahme enthält.
Zum Seitenanfang

Diese Klasse ist die Basisklasse für alle Ausnahmen. Wenn ein Fehler auftritt, wird dieser entweder vom System oder von der aktuell ausgeführten Anwendung durch Auslösen einer Ausnahme gemeldet, die Informationen zu dem Fehler enthält. Sobald eine Ausnahme ausgelöst wird, wird sie von der Anwendung oder vom Standardausnahmehandler verarbeitet.

Try-Catch-Blöcke

Die Common Language Runtime stellt ein Modell zur Ausnahmebehandlung bereit, das auf der Darstellung von Ereignissen als Objekt und auf der Trennung von Programmcode und Code zur Ausnahmebehandlung in try-Blöcke bzw. in catch-Blöcke beruht. Es kann mehrere catch-Blöcke geben, von denen jeder zur Behandlung eines speziellen Ausnahmetyps bestimmt ist oder von denen ein Block zur Behandlung von genauer definierten Ausnahmen bestimmt ist.

Wenn in einer Anwendung Ausnahmen behandelt werden sollen, die beim Ausführen eines Anwendungscodeblocks auftreten, muss sich dieser Code innerhalb einer try-Anweisung befinden. Anwendungscode in einer try-Anweisung ist ein try-Block. Anwendungscode, der in einem try-Block ausgelöste Ausnahmen behandelt, wird in einer catch-Anweisung platziert und als catch-Block bezeichnet. Einem try-Block sind 0 oder mehr catch-Blöcke zugeordnet. Jeder catch-Block enthält einen Typfilter, der die Typen der von ihm behandelten Ausnahmen festlegt.

Wenn in einem try-Block eine Ausnahme ausgelöst wird, durchsucht das System die zugeordneten catch-Blöcke in der Reihenfolge, in der sie im Anwendungscode auftreten, bis ein catch-Block gefunden wird, der die Ausnahme behandelt. Ein catch-Block behandelt Ausnahmen vom Typ T, wenn der Typfilter des catch-Blocks T oder einen Typ angibt, von dem T abgeleitet ist. Wenn der erste catch-Block gefunden wird, der die Ausnahme behandelt, beendet das System die Suche. Aus diesem Grunde muss ein catch-Block, der einen Typ behandelt, im Anwendungscode vor einem catch-Block stehen, der seine Basistypen behandelt. Dies wird im Beispiel am Ende dieses Abschnitts veranschaulicht. Ein catch-Block, der System.Exception behandelt, wird zuletzt angegeben.

Wenn keiner der dem aktuellen try-Block zugeordneten catch-Blöcke die Ausnahme behandelt und der aktuelle try-Block beim aktuellen Aufruf in anderen try-Blöcken geschachtelt ist, werden die catch-Blöcke durchsucht, die dem nächsten umschließenden try-Block zugeordnet sind. Wenn kein catch-Block für die Ausnahme gefunden wird, durchsucht das System höhere Schachtelungsebenen im aktuellen Aufruf. Wenn für die Ausnahme im aktuellen Aufruf kein catch-Block gefunden wird, wird die Ausnahme gemäß der Aufrufliste weitergegeben, und der vorige Stapelrahmen wird nach einem catch-Block durchsucht, der die Ausnahme behandelt. Das Durchsuchen der Aufrufliste wird fortgesetzt, bis die Ausnahme behandelt wird oder in der Aufrufliste kein Stapelrahmen mehr vorhanden ist. Wenn der Anfang der Aufrufliste erreicht ist, ohne einen catch-Block für die Behandlung der Ausnahme zu finden, wird der Standardausnahmehandler aufgerufen, und die Anwendung wird beendet.

Features von Ausnahmetypen

Die Ausnahmetypen unterstützen die folgenden Features:

  • Fehlerbeschreibungen im Klartext. Beim Auftreten einer Ausnahme stellt die Common Language Runtime eine Textmeldung bereit, die den Benutzer über die Art des Fehlers informiert und Wege zur Lösung des Problems vorschlägt. Diese Textmeldung befindet sich in der Message-Eigenschaft des Ausnahmeobjekts. Beim Erstellen des Ausnahmeobjekts kann eine Zeichenfolge an den Konstruktor übergeben werden, in der die Einzelheiten dieser bestimmten Ausnahme beschrieben werden. Wenn kein Argument für die Fehlermeldung übergeben wird, wird die Standardfehlermeldung verwendet.

  • Der Zustand der Aufrufliste beim Auslösen der Ausnahme. Die StackTrace-Eigenschaft enthält eine Stapelüberwachung, mit der die Stelle im Code bestimmt werden kann, an der der Fehler auftritt. Die Stapelüberwachung führt alle aufgerufenen Methoden und die Zeilennummern der Quelldatei auf, in der die Aufrufe stattfinden.

Kategorien von Ausnahmetypen

Für die Exception-Basisklasse sind zwei Ausnahmekategorien vorhanden:

  • Die vordefinierten, von SystemException abgeleiteten Ausnahmeklassen der Common Language Runtime.

  • Die benutzerdefinierten, von ApplicationException abgeleiteten Ausnahmeklassen der Anwendung.

Ausnahmeklasseneigenschaften

Exception besitzt eine Anzahl von Eigenschaften, mit der Codeposition, Typ, Hilfedatei und Ursache für eine Ausnahme ermittelt werden können: StackTrace, InnerException, Message, HelpLink, HResult, Source, TargetSite und Data.

Wenn zwischen zwei oder mehr Ausnahmen eine kausale Beziehung besteht, wird dies durch die InnerException-Eigenschaft wiedergegeben. Die äußere Ausnahme wird als Reaktion auf diese innere Ausnahme ausgelöst. Der Code, der die äußere Ausnahme behandelt, kann den Fehler anhand der Informationen über die innere Ausnahme auf geeignetere Weise behandeln. Zusätzliche Informationen über die Ausnahme können in der Data-Eigenschaft gespeichert werden.

Die Fehlermeldungszeichenfolge, die dem Konstruktor beim Erstellen des Ausnahmeobjekts übergeben wird, sollte lokalisiert sein und kann über den ResourceManager einer Ressourcendatei entnommen werden. Weitere Informationen über lokalisierte Ressourcen finden Sie in der Übersicht über den System.Resources-Namespace und unter Verpacken und Bereitstellen von Ressourcen .

Die HelpLink-Eigenschaft kann eine URL (oder einen URN) für eine Hilfedatei enthalten, um dem Benutzer ausführliche Informationen über die Ursache der Ausnahme zur Verfügung zu stellen.

Exception verwendet HRESULT COR_E_EXCEPTION mit dem Wert 0x80131500.

Eine Liste der anfänglichen Eigenschaftswerte für eine Instanz von Exception finden Sie unter Exception-Konstruktoren.

Überlegungen zur Leistung

Das Auslösen und Behandeln einer Ausnahme beansprucht einen beträchtlichen Anteil an Systemressourcen und Ausführungszeit. Ausnahmen sollten nur zum Behandeln von wirklich außergewöhnlichen Bedingungen eingesetzt werden, nicht für die Behandlung von vorhersagbaren Ereignissen oder für die Ablaufsteuerung. So ist es beispielsweise gerechtfertigt, eine Ausnahme auszulösen, wenn ein Argument für eine Methode unzulässig ist, weil erwartet werden kann, dass die Methode mit gültigen Parametern aufgerufen wird. Ein ungültiges Argument für eine Methode bedeutet, dass etwas Außergewöhnliches aufgetreten ist. Auf der anderen Seite sollte keine Ausnahme ausgelöst werden, wenn Benutzereingaben ungültig sind, weil erwartet werden kann, dass Benutzer gelegentlich ungültige Daten eingeben. Stellen Sie in solch einem Fall ein Wiederholmechanismus bereit, damit Benutzer gültige Eingaben vornehmen können.

Lösen Sie nur in außergewöhnlichen Bedingungen Ausnahmen aus, und fangen Sie die Ausnahmen in einem allgemeinen Ausnahmehandler ab, der für einen Großteil Ihrer Anwendung anwendbar ist, nicht in einem Handler, der nur für eine spezifische Ausnahme gilt. Diesem Ansatz liegt folgende Überlegung zugrunde: Die meisten Fehler können durch Validierung und Fehlerbehandlungscode im unmittelbaren Umfeld des Fehlers behandelt werden, es müssen also keine Ausnahmen ausgelöst oder abgefangen werden. Der allgemeine Ausnahmehandler fängt wirklich außergewöhnliche Ausnahmen ab, die an einer beliebigen Stelle in der Anwendung ausgelöst wurden.

Lösen Sie außerdem keine Ausnahme aus, wenn ein Rückgabecode ausreichen würde, konvertieren Sie keinen Rückgabecode in eine Ausnahme, und fangen Sie nicht routinemäßig Ausnahmen ab, sondern ignorieren Sie sie, und fahren Sie mit der Verarbeitung fort.

Im folgenden Codebeispiel wird ein catch-Block veranschaulicht, der zur Behandlung von ArithmeticException-Fehlern definiert wird. Dieser catch-Block fängt auch DivideByZeroException-Fehler ab, da DivideByZeroException von ArithmeticException abgeleitet ist und kein explizit für DivideByZeroException-Fehler definierter catch-Block vorhanden ist.


using System;

class ExceptionTestClass 
{
   public static void Main() 
   {
      int x = 0;
      try 
      {
         int y = 100/x;
      }
         catch (ArithmeticException e) 
         {
            Console.WriteLine("ArithmeticException Handler: {0}", e.ToString());
         }
         catch (Exception e) 
         {
            Console.WriteLine("Generic Exception Handler: {0}", e.ToString());
         }
   }	
}
/*
This code example produces the following results:

ArithmeticException Handler: System.DivideByZeroException: Attempted to divide by zero.
   at ExceptionTestClass.Main()

*/


.NET Framework

Unterstützt in: 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Unterstützt in: 4, 3.5 SP1

Unterstützt in:

Windows 7, Windows Vista SP1 oder höher, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (Server Core wird nicht unterstützt), Windows Server 2008 R2 (Server Core wird mit SP1 oder höher unterstützt), Windows Server 2003 SP2

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.

Alle öffentlichen static (Shared in Visual Basic)-Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.

System.Object
  System.Exception
    Microsoft.Build.BuildEngine.InternalLoggerException
    Microsoft.Build.BuildEngine.InvalidProjectFileException
    Microsoft.Build.BuildEngine.InvalidToolsetDefinitionException
    Microsoft.Build.BuildEngine.RemoteErrorException
    Microsoft.Build.Exceptions.BuildAbortedException
    Microsoft.Build.Exceptions.InternalLoggerException
    Microsoft.Build.Exceptions.InvalidProjectFileException
    Microsoft.Build.Exceptions.InvalidToolsetDefinitionException
    Microsoft.Build.Framework.LoggerException
    Microsoft.CSharp.RuntimeBinder.RuntimeBinderException
    Microsoft.CSharp.RuntimeBinder.RuntimeBinderInternalCompilerException
    Microsoft.JScript.CmdLineException
    Microsoft.JScript.ParserException
    Microsoft.VisualBasic.ApplicationServices.CantStartSingleInstanceException
    Microsoft.VisualBasic.ApplicationServices.NoStartupFormException
    Microsoft.VisualBasic.Compatibility.VB6.WebClassContainingClassNotOptional
    Microsoft.VisualBasic.Compatibility.VB6.WebClassCouldNotFindEvent
    Microsoft.VisualBasic.Compatibility.VB6.WebClassNextItemCannotBeCurrentWebItem
    Microsoft.VisualBasic.Compatibility.VB6.WebClassNextItemRespondNotFound
    Microsoft.VisualBasic.Compatibility.VB6.WebClassUserWebClassNameNotOptional
    Microsoft.VisualBasic.Compatibility.VB6.WebClassWebClassFileNameNotOptional
    Microsoft.VisualBasic.Compatibility.VB6.WebClassWebItemNotValid
    Microsoft.VisualBasic.Compatibility.VB6.WebItemAssociatedWebClassNotOptional
    Microsoft.VisualBasic.Compatibility.VB6.WebItemClosingTagNotFound
    Microsoft.VisualBasic.Compatibility.VB6.WebItemCouldNotLoadEmbeddedResource
    Microsoft.VisualBasic.Compatibility.VB6.WebItemCouldNotLoadTemplateFile
    Microsoft.VisualBasic.Compatibility.VB6.WebItemNameNotOptional
    Microsoft.VisualBasic.Compatibility.VB6.WebItemNoTemplateSpecified
    Microsoft.VisualBasic.Compatibility.VB6.WebItemTooManyNestedTags
    Microsoft.VisualBasic.Compatibility.VB6.WebItemUnexpectedErrorReadingTemplateFile
    Microsoft.VisualBasic.CompilerServices.IncompleteInitialization
    Microsoft.VisualBasic.CompilerServices.InternalErrorException
    Microsoft.VisualBasic.FileIO.MalformedLineException
    System.Activities.ExpressionParser.SourceExpressionException
    System.Activities.Expressions.LambdaSerializationException
    System.Activities.InvalidWorkflowException
    System.Activities.Presentation.Metadata.AttributeTableValidationException
    System.Activities.Statements.WorkflowTerminatedException
    System.Activities.WorkflowApplicationException
    System.AddIn.Hosting.AddInSegmentDirectoryNotFoundException
    System.AddIn.Hosting.InvalidPipelineStoreException
    System.AggregateException
    System.ApplicationException
    System.ComponentModel.Composition.CompositionContractMismatchException
    System.ComponentModel.Composition.CompositionException
    System.ComponentModel.Composition.ImportCardinalityMismatchException
    System.ComponentModel.Composition.Primitives.ComposablePartException
    System.ComponentModel.DataAnnotations.ValidationException
    System.ComponentModel.Design.ExceptionCollection
    System.Configuration.Provider.ProviderException
    System.Configuration.SettingsPropertyIsReadOnlyException
    System.Configuration.SettingsPropertyNotFoundException
    System.Configuration.SettingsPropertyWrongTypeException
    System.Data.Linq.ChangeConflictException
    System.Diagnostics.Eventing.Reader.EventLogException
    System.DirectoryServices.ActiveDirectory.ActiveDirectoryObjectExistsException
    System.DirectoryServices.ActiveDirectory.ActiveDirectoryObjectNotFoundException
    System.DirectoryServices.ActiveDirectory.ActiveDirectoryOperationException
    System.DirectoryServices.ActiveDirectory.ActiveDirectoryServerDownException
    System.DirectoryServices.Protocols.DirectoryException
    System.IdentityModel.Selectors.CardSpaceException
    System.IdentityModel.Selectors.IdentityValidationException
    System.IdentityModel.Selectors.PolicyValidationException
    System.IdentityModel.Selectors.ServiceBusyException
    System.IdentityModel.Selectors.ServiceNotStartedException
    System.IdentityModel.Selectors.StsCommunicationException
    System.IdentityModel.Selectors.UnsupportedPolicyOptionsException
    System.IdentityModel.Selectors.UntrustedRecipientException
    System.IdentityModel.Selectors.UserCancellationException
    System.InvalidTimeZoneException
    System.IO.IsolatedStorage.IsolatedStorageException
    System.IO.Log.SequenceFullException
    System.Management.Instrumentation.InstrumentationBaseException
    System.Management.Instrumentation.WmiProviderInstallationException
    System.Net.Mail.SmtpException
    System.Net.PeerToPeer.PeerToPeerException
    System.Runtime.CompilerServices.RuntimeWrappedException
    System.Runtime.DurableInstancing.InstancePersistenceException
    System.Runtime.Remoting.MetadataServices.SUDSGeneratorException
    System.Runtime.Remoting.MetadataServices.SUDSParserException
    System.Runtime.Serialization.InvalidDataContractException
    System.Security.RightsManagement.RightsManagementException
    System.ServiceModel.Channels.InvalidChannelBindingException
    System.SystemException
    System.Threading.BarrierPostPhaseException
    System.Threading.LockRecursionException
    System.Threading.Tasks.TaskSchedulerException
    System.TimeZoneNotFoundException
    System.Web.Query.Dynamic.ParseException
    System.Web.Security.MembershipCreateUserException
    System.Web.Security.MembershipPasswordException
    System.Web.UI.ViewStateException
    System.Web.UI.WebControls.EntityDataSourceValidationException
    System.Web.UI.WebControls.LinqDataSourceValidationException
    System.Windows.Automation.NoClickablePointException
    System.Windows.Automation.ProxyAssemblyNotLoadedException
    System.Windows.Controls.PrintDialogException
    System.Windows.Forms.AxHost.InvalidActiveXStateException
    System.Windows.Xps.XpsException
    System.Windows.Xps.XpsWriterException
    System.Workflow.Activities.Rules.RuleException
    System.Workflow.ComponentModel.Compiler.WorkflowValidationFailedException
    System.Workflow.ComponentModel.Serialization.WorkflowMarkupSerializationException
    System.Workflow.ComponentModel.WorkflowTerminatedException
    System.Workflow.Runtime.WorkflowOwnershipException
    System.Xaml.XamlException
Anzeigen: