NotSupportedException-Klasse
 

Veröffentlicht: Oktober 2016

Die Ausnahme, die ausgelöst wird, wenn eine aufgerufene Methode nicht unterstützt oder versucht wird, lesend, suchend oder schreibend auf einen Stream zuzugreifen, der die aufgerufene Funktion nicht unterstützt.

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

SystemObject
   SystemException
     SystemSystemException
      SystemNotSupportedException
         SystemPlatformNotSupportedException

[SerializableAttribute]
[ComVisibleAttribute(true)]
public class NotSupportedException : SystemException
[SerializableAttribute]
[ComVisibleAttribute(true)]
public ref class NotSupportedException : SystemException
[<SerializableAttribute>]
[<ComVisibleAttribute(true)>]
type NotSupportedException = 
    class
        inherit SystemException
    end
<SerializableAttribute>
<ComVisibleAttribute(True)>
Public Class NotSupportedException
	Inherits SystemException
NameBeschreibung
System_CAPS_pubmethod NotSupportedException

Initialisiert eine neue Instanz der der NotSupportedException -Klasse, die -Eigenschaft der neuen Instanz mit einer vom System gelieferten Meldung, die den Fehler beschreibt. Diese Meldung berücksichtigt die aktuelle Systemkultur.

System_CAPS_protmethod NotSupportedException

Initialisiert eine neue Instanz der NotSupportedException-Klasse mit serialisierten Daten.

System_CAPS_pubmethod NotSupportedException

Initialisiert eine neue Instanz der NotSupportedException-Klasse mit einer angegebenen Fehlermeldung.

System_CAPS_pubmethod NotSupportedException

Initialisiert eine neue Instanz der NotSupportedException-Klasse mit einer angegebenen Fehlermeldung und einem Verweis auf die innere Ausnahme, die diese Ausnahme ausgelöst hat.

NameBeschreibung
System_CAPS_pubproperty

Ruft eine Auflistung von Schlüssel-Wert-Paaren ab, die zusätzliche benutzerdefinierte Informationen über die Ausnahme bereitstellen. (Geerbt von „ Exception“.)

System_CAPS_pubproperty

Ruft einen Link zur Hilfedatei ab, die dieser Ausnahme zugeordnet ist, oder legt einen Link fest. (Geerbt von „ Exception“.)

System_CAPS_pubproperty

Ruft HRESULT ab oder legt HRESULT fest. Dies ist ein codierter Wert, der einer bestimmten Ausnahme zugeordnet ist. (Geerbt von „ Exception“.)

System_CAPS_pubproperty

Ruft die Exception-Instanz ab, die die aktuelle Ausnahme verursacht hat. (Geerbt von „ Exception“.)

System_CAPS_pubproperty

Ruft eine Meldung ab, die die aktuelle Ausnahme beschreibt. (Geerbt von „ Exception“.)

System_CAPS_pubproperty

Gibt den Namen der Anwendung oder des Objekts zurück, die bzw. das den Fehler verursacht hat, oder legt diesen fest. (Geerbt von „ Exception“.)

System_CAPS_pubproperty

Ruft eine Zeichenfolgendarstellung der unmittelbaren Frames in der Aufrufliste ab. (Geerbt von „ Exception“.)

System_CAPS_pubproperty

Ruft die Methode ab, die die aktuelle Ausnahme auslöst. (Geerbt von „ Exception“.)

NameBeschreibung
System_CAPS_pubmethod Equals

Bestimmt, ob das angegebene Objekt mit dem aktuellen Objekt identisch ist. (Geerbt von „ Object“.)

System_CAPS_protmethod Finalize

Gibt einem Objekt Gelegenheit zu dem Versuch, Ressourcen freizugeben und andere Bereinigungen durchzuführen, bevor es von der Garbage Collection freigegeben wird. (Geerbt von „ Object“.)

System_CAPS_pubmethod GetBaseException

Gibt beim Überschreiben in einer abgeleiteten Klasse eine Exception zurück, die die ursprüngliche Ursache für eine oder mehrere nachfolgende Ausnahmen ist. (Geerbt von „ Exception“.)

System_CAPS_pubmethod GetHashCode

Fungiert als die Standardhashfunktion. (Geerbt von „ Object“.)

System_CAPS_pubmethod GetObjectData

Legt beim Überschreiben in einer abgeleiteten Klasse die SerializationInfo mit Informationen über die Ausnahme fest. (Geerbt von „ Exception“.)

System_CAPS_pubmethod GetType

Ruft den Laufzeittyp der aktuellen Instanz ab. (Geerbt von „ Exception“.)

System_CAPS_protmethod MemberwiseClone

Erstellt eine flache Kopie des aktuellen Object. (Geerbt von „ Object“.)

System_CAPS_pubmethod ToString

Erstellt eine Zeichenfolgendarstellung der aktuellen Ausnahme und gibt diese zurück. (Geerbt von „ Exception“.)

NameBeschreibung
System_CAPS_protevent SerializeObjectState

Tritt auf, wenn eine Ausnahme serialisiert wird, um ein Ausnahmezustandsobjekt zu erstellen, das serialisierte Daten für die Ausnahme enthält. (Geerbt von „ Exception“.)

NotSupportedException Gibt an, dass keine Implementierung für eine aufgerufene Methode oder Eigenschaft vorhanden ist.

NotSupportedException verwendet HRESULT COR_E_NOTSUPPORTED mit den Wert 0 x 80131515.

Eine Liste der anfänglichen Eigenschaftenwerte für eine Instanz von NotSupportedException, finden Sie unter der NotSupportedException Konstruktoren.

Sie sollten erwägen, Auslösen einer NotSupportedException Ausnahme in den folgenden Fällen:

  • Implementieren Sie eine allgemeine Schnittstelle und einige der Methoden weisen keine sinnvollen Implementierung. Z. B. beim Erstellen einer Datums- und Uhrzeitangabe geben, implementiert die IConvertible -Schnittstelle, die Sie auslösen würde eine NotSupportedException Ausnahme für die meisten der Konvertierungen.

  • Sie haben von einer abstrakten Klasse geerbt, die erfordert, dass Sie eine Reihe von Methoden überschreiben. Allerdings sind Sie nur darauf vorbereitet, eine Implementierung für eine Teilmenge dieser bereitstellen. Die Methoden, die Sie nicht implementieren möchten, können Sie auswählen, löst einen NotSupportedException.

  • Sie definieren einen allgemeinen Typ mit dem Status, die bedingt Vorgänge ermöglicht. Der Typ kann z. B. schreibgeschützten oder Lese-/ Schreibzugriff. In diesem Fall:

    • Wenn das Objekt schreibgeschützt ist, versucht, um die Eigenschaften der Instanz oder rufen Methoden Werte zuzuweisen, den Zustand der Instanz zu ändern, lösen eine NotSupportedException Ausnahme.

    • Sollten Sie eine Eigenschaft, die zurückgibt implementieren einen Boolean -Wert, der angibt, ob bestimmte Funktionen verfügbar sind. Z. B. für einen Typ, der nur-Lese oder Lese-/ Schreibzugriff sein kann, Sie könnten implementieren eine IsReadOnly -Eigenschaft, die angibt, ob die Gruppe der Schreib-Lese-Methoden sind verfügbar oder nicht verfügbar.

Die NotSupportedException Ausnahme gibt an, dass eine Methode keine Implementierung verfügt und Sie nicht aufrufen sollten. Sie sollten die Ausnahme nicht behandelt. Stattdessen, was Sie tun müssen, hängt die Ursache der Ausnahme:, ob eine Implementierung vollständig nicht vorhanden ist, oder der Aufruf ist inkonsistent, um ein Objekt zu (z. B. einen Aufruf an die FileStreamRead Methode auf eine schreibgeschützte FileStream Objekt.

Eine Implementierung wurde nicht angegeben, da der Vorgang auf sinnvolle Weise ausgeführt werden kann.

Dies ist eine allgemeine Ausnahme, wenn Sie Methoden für ein Objekt aufrufen, die Implementierungen für die Methoden von einer abstrakten Klasse oder dieser implementiert eine allgemeine Schnittstelle bereitstellt, und die Methode keine sinnvollen Implementierung hat.

Zum Beispiel die Convert -Klasse implementiert die IConvertible Schnittstelle, was bedeutet, dass es eine Methode zum Konvertieren von jeder primitiven Typs in allen anderen primitiven Typen enthalten muss. Viele der Konvertierungen, sind jedoch nicht möglich. Als Ergebnis einen Aufruf der ConvertToBoolean -Methode, löst eine NotSupportedException Ausnahme da gibt es keine mögliche Konvertierung zwischen eine DateTime und ein Boolean Wert

Um die Ausnahme zu vermeiden, sollten Sie den Methodenaufruf vermeiden.

Der Methodenaufruf wird nicht unterstützt, erhält den Status des Objekts.

Sie versuchen, einen Member aufzurufen, dessen Funktionalität aufgrund des Status des Objekts nicht verfügbar ist. Sie können die Ausnahme in eine von drei Arten vermeiden:

  • Der Zustand des Objekts im Voraus wissen, aber Sie haben eine nicht unterstützte Methode oder Eigenschaft aufgerufen. In diesem Fall der Aufruf ist ein Fehler aufgetreten, und Sie beseitigen können.

  • Sie den Zustand des Objekts im Voraus wissen (normalerweise, weil Ihr Code es instanziiert wurde), aber das Objekt ist nicht korrekt konfiguriert. Das folgende Beispiel veranschaulicht dieses Problem. Erstellt eine schreibgeschützte FileStream -Objekt und dann versuchen, darauf zu schreiben.

    using System;
    using System.IO;
    using System.Text;
    using System.Threading.Tasks;
    
    public class Example
    {
       public static void Main()
       {
          Encoding enc = Encoding.Unicode;
          String value = "This is a string to persist.";
          Byte[] bytes  = enc.GetBytes(value);
    
          FileStream fs = new FileStream(@".\TestFile.dat", 
                                         FileMode.Open,
                                         FileAccess.Read);
          Task t = fs.WriteAsync(enc.GetPreamble(), 0, enc.GetPreamble().Length);
          Task t2 = t.ContinueWith( (a) => fs.WriteAsync(bytes, 0, bytes.Length) ); 
          t2.Wait();
          fs.Close();
       }
    }
    // The example displays the following output:
    //    Unhandled Exception: System.NotSupportedException: Stream does not support writing.
    //       at System.IO.Stream.BeginWriteInternal(Byte[] buffer, Int32 offset, Int32 count, AsyncCallback callback, Object state
    //    , Boolean serializeAsynchronously)
    //       at System.IO.FileStream.BeginWrite(Byte[] array, Int32 offset, Int32 numBytes, AsyncCallback userCallback, Object sta
    //    teObject)
    //       at System.IO.Stream.<>c.<BeginEndWriteAsync>b__53_0(Stream stream, ReadWriteParameters args, AsyncCallback callback,
    //    Object state)
    //       at System.Threading.Tasks.TaskFactory`1.FromAsyncTrim[TInstance,TArgs](TInstance thisRef, TArgs args, Func`5 beginMet
    //    hod, Func`3 endMethod)
    //       at System.IO.Stream.BeginEndWriteAsync(Byte[] buffer, Int32 offset, Int32 count)
    //       at System.IO.FileStream.WriteAsync(Byte[] buffer, Int32 offset, Int32 count, CancellationToken cancellationToken)
    //       at System.IO.Stream.WriteAsync(Byte[] buffer, Int32 offset, Int32 count)
    //       at Example.Main()
    Imports System.IO
    Imports System.Text
    Imports System.Threading.Tasks
    
    Module Example
       Public Sub Main()
          Dim enc As Encoding = Encoding.Unicode
          Dim value As String = "This is a string to persist."
          Dim bytes() As Byte = enc.GetBytes(value)
    
          Dim fs As New FileStream(".\TestFile.dat", 
                                   FileMode.Open,
                                   FileAccess.Read)
          Dim t As Task = fs.WriteAsync(enc.GetPreamble(), 0, enc.GetPreamble().Length)
          Dim t2 As Task = t.ContinueWith(Sub(a) fs.WriteAsync(bytes, 0, bytes.Length)) 
          t2.Wait()
          fs.Close()
       End Sub
    End Module
    ' The example displays the following output:
    '    Unhandled Exception: System.NotSupportedException: Stream does not support writing.
    '       at System.IO.Stream.BeginWriteInternal(Byte[] buffer, Int32 offset, Int32 count, AsyncCallback callback, Object state
    '    , Boolean serializeAsynchronously)
    '       at System.IO.FileStream.BeginWrite(Byte[] array, Int32 offset, Int32 numBytes, AsyncCallback userCallback, Object sta
    '    teObject)
    '       at System.IO.Stream.<>c.<BeginEndWriteAsync>b__53_0(Stream stream, ReadWriteParameters args, AsyncCallback callback,
    '    Object state)
    '       at System.Threading.Tasks.TaskFactory`1.FromAsyncTrim[TInstance,TArgs](TInstance thisRef, TArgs args, Func`5 beginMet
    '    hod, Func`3 endMethod)
    '       at System.IO.Stream.BeginEndWriteAsync(Byte[] buffer, Int32 offset, Int32 count)
    '       at System.IO.FileStream.WriteAsync(Byte[] buffer, Int32 offset, Int32 count, CancellationToken cancellationToken)
    '       at System.IO.Stream.WriteAsync(Byte[] buffer, Int32 offset, Int32 count)
    '       at Example.Main()

    Sie können die Ausnahme Leuchten ausschließen, die instanziierten Objekts Funktionen unterstützt werden sollen. Im folgende Beispiel behebt das Problem der schreibgeschützten FileStream Objekt, indem Sie die richtigen Argumente an die FileStreamFileStream Konstruktor.

  • Der Status des Objekts nicht im Voraus kennen, und das Objekt unterstützt keinen bestimmten Vorgang. In den meisten Fällen sollte das Objekt enthalten, eine Eigenschaft oder Methode, die angibt, ob es sich um einen bestimmten Satz von Operationen unterstützt. Sie können die Ausnahme vermeiden, indem Sie den Wert des Objekts und Aufrufen des Members nur bei Bedarf.

    Das folgende Beispiel definiert eine DetectEncoding Methode, auslöst, eine NotSupportedException -Ausnahme aus, wenn versucht wird, beginnend mit einem Stream zu lesen, die Lesezugriff nicht unterstützt.

    using System;
    using System.IO;
    using System.Threading.Tasks;
    
    public class Example
    {
       public static void Main()
       {
          String name = @".\TestFile.dat";
          var fs = new FileStream(name, 
                                  FileMode.Create,
                                  FileAccess.Write);
             Console.WriteLine("Filename: {0}, Encoding: {1}", 
                               name, FileUtilities.GetEncodingType(fs));
       }
    }
    
    public class FileUtilities
    {
       public enum EncodingType
       { None = 0, Unknown = -1, Utf8 = 1, Utf16 = 2, Utf32 = 3 }
    
       public static EncodingType GetEncodingType(FileStream fs)
       {
          Byte[] bytes = new Byte[4];
          var t = fs.ReadAsync(bytes, 0, 4);
          t.Wait();
          int bytesRead = t.Result;
          if (bytesRead < 2)
             return EncodingType.None;
    
          if (bytesRead >= 3 & (bytes[0] == 0xEF && bytes[1] == 0xBB && bytes[2] == 0xBF))
             return EncodingType.Utf8;
    
          if (bytesRead == 4) { 
             var value = BitConverter.ToUInt32(bytes, 0);
             if (value == 0x0000FEFF | value == 0xFEFF0000)
                return EncodingType.Utf32;
          }
    
          var value16 = BitConverter.ToUInt16(bytes, 0);
          if (value16 == (ushort)0xFEFF | value16 == (ushort)0xFFFE) 
             return EncodingType.Utf16;
    
          return EncodingType.Unknown;
       }
    }
    // The example displays the following output:
    //    Unhandled Exception: System.NotSupportedException: Stream does not support reading.
    //       at System.IO.Stream.BeginReadInternal(Byte[] buffer, Int32 offset, Int32 count, AsyncCallback callback, Object state,
    //     Boolean serializeAsynchronously)
    //       at System.IO.FileStream.BeginRead(Byte[] array, Int32 offset, Int32 numBytes, AsyncCallback userCallback, Object stat
    //    eObject)
    //       at System.IO.Stream.<>c.<BeginEndReadAsync>b__43_0(Stream stream, ReadWriteParameters args, AsyncCallback callback, O
    //    bject state)
    //       at System.Threading.Tasks.TaskFactory`1.FromAsyncTrim[TInstance,TArgs](TInstance thisRef, TArgs args, Func`5 beginMet
    //    hod, Func`3 endMethod)
    //       at System.IO.Stream.BeginEndReadAsync(Byte[] buffer, Int32 offset, Int32 count)
    //       at System.IO.FileStream.ReadAsync(Byte[] buffer, Int32 offset, Int32 count, CancellationToken cancellationToken)
    //       at System.IO.Stream.ReadAsync(Byte[] buffer, Int32 offset, Int32 count)
    //       at FileUtilities.GetEncodingType(FileStream fs)
    //       at Example.Main()
    Imports System.IO
    Imports System.Threading.Tasks
    
    Module Example
       Public Sub Main()
          Dim name As String = ".\TestFile.dat"
          Dim fs As New FileStream(name, 
                                   FileMode.Create,
                                   FileAccess.Write)
          Console.WriteLine("Filename: {0}, Encoding: {1}", 
                            name, FileUtilities.GetEncodingType(fs))
       End Sub
    End Module
    
    Public Class FileUtilities
       Public Enum EncodingType As Integer
          None = 0
          Unknown = -1
          Utf8 = 1
          Utf16 = 2
          Utf32 = 3
       End Enum
    
       Public Shared Function GetEncodingType(fs As FileStream) As EncodingType
          Dim bytes(3) As Byte
          Dim t As Task(Of Integer) = fs.ReadAsync(bytes, 0, 4)
          t.Wait()
          Dim bytesRead As Integer = t.Result
          If bytesRead < 2 Then Return EncodingType.None
    
          If bytesRead >= 3 And (bytes(0) = &hEF AndAlso bytes(1) = &hBB AndAlso bytes(2) = &hBF) Then
             Return EncodingType.Utf8
          End If
    
          If bytesRead = 4 Then 
             Dim value As UInteger = BitConverter.ToUInt32(bytes, 0)
             If value = &h0000FEFF Or value = &hFEFF0000 Then
                Return EncodingType.Utf32
             End If
          End If
    
          Dim value16 As UInt16 = BitConverter.ToUInt16(bytes, 0)
          If value16 = &hFEFF Or value16 = &hFFFE Then 
             Return EncodingType.Utf16
          End If
    
          Return EncodingType.Unknown
       End Function
    End Class
    ' The example displays the following output:
    '    Unhandled Exception: System.NotSupportedException: Stream does not support reading.
    '       at System.IO.Stream.BeginReadInternal(Byte[] buffer, Int32 offset, Int32 count, AsyncCallback callback, Object state,
    '     Boolean serializeAsynchronously)
    '       at System.IO.FileStream.BeginRead(Byte[] array, Int32 offset, Int32 numBytes, AsyncCallback userCallback, Object stat
    '    eObject)
    '       at System.IO.Stream.<>c.<BeginEndReadAsync>b__43_0(Stream stream, ReadWriteParameters args, AsyncCallback callback, O
    '    bject state)
    '       at System.Threading.Tasks.TaskFactory`1.FromAsyncTrim[TInstance,TArgs](TInstance thisRef, TArgs args, Func`5 beginMet
    '    hod, Func`3 endMethod)
    '       at System.IO.Stream.BeginEndReadAsync(Byte[] buffer, Int32 offset, Int32 count)
    '       at System.IO.FileStream.ReadAsync(Byte[] buffer, Int32 offset, Int32 count, CancellationToken cancellationToken)
    '       at System.IO.Stream.ReadAsync(Byte[] buffer, Int32 offset, Int32 count)
    '       at FileUtilities.GetEncodingType(FileStream fs)
    '       at Example.Main()

    Sie können die Ausnahme eliminieren, indem Sie den Wert der die -Eigenschaft, und beenden die Methode aus, wenn der Stream schreibgeschützt ist.

       public static EncodingType GetEncodingType(FileStream fs)
       {
          if (!fs.CanRead) 
             return EncodingType.Unknown;
    
          Byte[] bytes = new Byte[4];
          var t = fs.ReadAsync(bytes, 0, 4);
          t.Wait();
          int bytesRead = t.Result;
          if (bytesRead < 2)
             return EncodingType.None;
    
          if (bytesRead >= 3 & (bytes[0] == 0xEF && bytes[1] == 0xBB && bytes[2] == 0xBF))
             return EncodingType.Utf8;
    
          if (bytesRead == 4) { 
             var value = BitConverter.ToUInt32(bytes, 0);
             if (value == 0x0000FEFF | value == 0xFEFF0000)
                return EncodingType.Utf32;
          }
    
          var value16 = BitConverter.ToUInt16(bytes, 0);
          if (value16 == (ushort)0xFEFF | value16 == (ushort)0xFFFE) 
             return EncodingType.Utf16;
    
          return EncodingType.Unknown;
       }
    }
    // The example displays the following output:
    //       Filename: .\TestFile.dat, Encoding: Unknown
    Public Class FileUtilities
       Public Enum EncodingType As Integer
          None = 0
          Unknown = -1
          Utf8 = 1
          Utf16 = 2
          Utf32 = 3
       End Enum
    
       Public Shared Function GetEncodingType(fs As FileStream) As EncodingType
          If Not fs.CanRead Then
             Return EncodingType.Unknown
    
          Dim bytes(3) As Byte
          Dim t As Task(Of Integer) = fs.ReadAsync(bytes, 0, 4)
          t.Wait()
          Dim bytesRead As Integer = t.Result
          If bytesRead < 2 Then Return EncodingType.None
    
          If bytesRead >= 3 And (bytes(0) = &hEF AndAlso bytes(1) = &hBB AndAlso bytes(2) = &hBF) Then
             Return EncodingType.Utf8
          End If
    
          If bytesRead = 4 Then 
             Dim value As UInteger = BitConverter.ToUInt32(bytes, 0)
             If value = &h0000FEFF Or value = &hFEFF0000 Then
                Return EncodingType.Utf32
             End If
          End If
    
          Dim value16 As UInt16 = BitConverter.ToUInt16(bytes, 0)
          If value16 = &hFEFF Or value16 = &hFFFE Then 
             Return EncodingType.Utf16
          End If
    
          Return EncodingType.Unknown
       End Function
    End Class
    ' The example displays the following output:
    '       Filename: .\TestFile.dat, Encoding: Unknown

Die NotSupportedException Ausnahme ist eng mit zwei anderen Ausnahmetypen;

NotImplementedException.

Diese Ausnahme wird ausgelöst, wenn eine Methode implementiert werden kann, aber nicht, weil das Element wird in einer späteren Version implementiert werden, das Element ist nicht verfügbar auf einer bestimmten Plattform oder das Element gehört zu einer abstrakten Klasse und eine abgeleitete Klasse eine Implementierung bereitstellen muss.

InvalidOperationException

Diese Ausnahme wird in Szenarien, in denen es im Allgemeinen manchmal möglich, dass das Objekt, das den angeforderten Vorgang auszuführen ist, und der Objektzustand bestimmt, ob der Vorgang ausgeführt werden kann.

Wenn Sie mit .NET Compact Framework arbeiten und in einer systemeigenen Funktion P/Invoke verwenden, können folgende Bedingungen zum Auslösen der Ausnahme führen:

  • Die Deklaration im verwalteten Code ist nicht korrekt.

  • Ihre Aktion wird nicht von .NET Compact Framework unterstützt.

  • Die DLL-Namen werden beim Export geändert.

Wenn eine NotSupportedException Ausnahme ausgelöst wird, überprüfen:

  • Ob Verstöße gegen die P/Invoke-Beschränkungen von .NET Compact Framework vorliegen.

  • Ob Argumente vorhanden sind, die im Voraus belegten Arbeitsspeicher erfordern. Falls sie vorhanden sind, sollten Sie einen Verweis auf eine vorhandene Variable übergeben.

  • Ob die Namen der exportierten Funktionen korrekt sind. Dies kann überprüft werden, mit DumpBin.exe.

  • Ob Sie zu viele Argumente zu übergeben versuchen.

Universelle Windows-Plattform
Verfügbar seit 8
.NET Framework
Verfügbar seit 1.1
Portierbare Klassenbibliothek
Unterstützt in: portierbare .NET-Plattformen
Silverlight
Verfügbar seit 2.0
Windows Phone Silverlight
Verfügbar seit 7.0
Windows Phone
Verfügbar seit 8.1

Alle öffentlichen statischen Member ( Shared in Visual Basic) dieses Typs sind threadsicher. Die Threadsicherheit für Instanzmember ist nicht garantiert.

Zurück zum Anfang