Este artigo foi traduzido por máquina. Para visualizar o arquivo em inglês, marque a caixa de seleção Inglês. Você também pode exibir o texto Em inglês em uma janela pop-up, movendo o ponteiro do mouse sobre o texto.
Tradução
Inglês

Classe NotSupportedException

 

A exceção que é gerada quando um método invocado não tem suporte ou quando há uma tentativa de leitura, busca ou gravação em um fluxo que não dá suporte à funcionalidade invocada.

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

System.Object
  System.Exception
    System.SystemException
      System.NotSupportedException
        System.PlatformNotSupportedException

[SerializableAttribute]
[ComVisibleAttribute(true)]
public class NotSupportedException : SystemException

NomeDescrição
System_CAPS_pubmethodNotSupportedException()

Inicializa uma nova instância do NotSupportedException classe, definindo o Message propriedade da nova instância de uma mensagem fornecida pelo sistema que descreve o erro. Essa mensagem leva em conta a cultura atual do sistema.

System_CAPS_protmethodNotSupportedException(SerializationInfo, StreamingContext)

Inicializa uma nova instância de NotSupportedException classe com dados serializados.

System_CAPS_pubmethodNotSupportedException(String)

Inicializa uma nova instância de NotSupportedException classe com uma mensagem de erro especificada.

System_CAPS_pubmethodNotSupportedException(String, Exception)

Inicializa uma nova instância de NotSupportedException classe com uma mensagem de erro especificada e uma referência à exceção interna que é a causa dessa exceção.

NomeDescrição
System_CAPS_pubpropertyData

Obtém uma coleção de pares chave/valor que fornecem informações adicionais definidas pelo usuário sobre a exceção. (Herdado de Exception.)

System_CAPS_pubpropertyHelpLink

Obtém ou define um link para o arquivo de ajuda associado a esta exceção.(Herdado de Exception.)

System_CAPS_pubpropertyHResult

Obtém ou define HRESULT, um valor numérico codificado que é atribuído a uma exceção específica.(Herdado de Exception.)

System_CAPS_pubpropertyInnerException

Obtém a instância Exception que causou a exceção atual.(Herdado de Exception.)

System_CAPS_pubpropertyMessage

Recebe uma mensagem que descreve a exceção atual.(Herdado de Exception.)

System_CAPS_pubpropertySource

Obtém ou define o nome do aplicativo ou do objeto que causa o erro. (Herdado de Exception.)

System_CAPS_pubpropertyStackTrace

Obtém uma representação de cadeia de caracteres de quadros imediatos na pilha de chamadas.(Herdado de Exception.)

System_CAPS_pubpropertyTargetSite

Obtém o método que gera a exceção atual.(Herdado de Exception.)

NomeDescrição
System_CAPS_pubmethodEquals(Object)

Verifica se o objeto especificado é igual ao objeto atual. (Herdado de Object.)

System_CAPS_protmethodFinalize()

Permite que um objeto tente liberar recursos e executar outras operações de limpeza antes que ele seja recuperado pela coleta de lixo. (Herdado de Object.)

System_CAPS_pubmethodGetBaseException()

Quando substituído em uma classe derivada, retorna a Exception que é a causa raiz de uma ou mais exceções subsequentes.(Herdado de Exception.)

System_CAPS_pubmethodGetHashCode()

Serve como a função de hash padrão.(Herdado de Object.)

System_CAPS_pubmethodGetObjectData(SerializationInfo, StreamingContext)

Quando substituído em uma classe derivada, define o SerializationInfo com informações sobre a exceção.(Herdado de Exception.)

System_CAPS_pubmethodGetType()

Obtém o tipo em tempo de execução da instância atual. (Herdado de Exception.)

System_CAPS_protmethodMemberwiseClone()

Cria uma cópia superficial do Object atual.(Herdado de Object.)

System_CAPS_pubmethodToString()

Cria e retorna uma representação da cadeia de caracteres da exceção atual. (Herdado de Exception.)

NomeDescrição
System_CAPS_proteventSerializeObjectState

Ocorre quando uma exceção é serializada para criar um objeto de estado de exceção que contém dados serializados sobre a exceção.(Herdado de Exception.)

NotSupportedException indicates that no implementation exists for an invoked method or property.

NotSupportedException uses the HRESULT COR_E_NOTSUPPORTED, which has the value 0x80131515.

For a list of initial property values for an instance of T:System.NotSupportedException, see the M:System.NotSupportedException.#ctor constructors.

You might consider throwing a T:System.NotSupportedException exception in the following cases:

  • You are implementing a general-purpose interface, and number of the methods have no meaningful implementation. For example, if you are creating a date and time type that implements the T:System.IConvertible interface, you would throw a T:System.NotSupportedException exception for most of the conversions.

  • You've inherited from an abstract class that requires that you override a number of methods. However, you're only prepared to provide an implementation for a subset of these. For the methods that you decide not to implement, you can choose to throw a T:System.NotSupportedException.

  • You are defining a general-purpose type with a state that enables operations conditionally. For example, your type can be either read-only or read-write. In that case:

    • If the object is read-only, attempting to assign values to the properties of an instance or call methods that modify instance state should throw a T:System.NotSupportedException exception.

    • You should implement a property that returns a T:System.Boolean value that indicates whether particular functionality is available. For example, for a type that can be either read-only or read-write, you could implement a IsReadOnly property that indicates whether the set of read-write methods are available or unavailable.

The T:System.NotSupportedException exception indicates that a method has no implementation and that you should not call it. You should not handle the exception. Instead, what you should do depends on the cause of the exception: whether an implementation is completely absent , or the member invocation is inconsistent with the purpose of an object (such as a call to the M:System.IO.FileStream.Read(System.Byte[],System.Int32,System.Int32) method on a read-only T:System.IO.FileStream object .

An implementation has not been provided because the operation cannot be performed in a meaningful way.

This is a common exception when you are calling methods on an object that provides implementations for the methods of an abstract base class, or that implements a general-purpose interface, and the method has no meaningful implementation.

For example, the T:System.Convert class implements the T:System.IConvertible interface, which means that it must include a method to convert every primitive type to every other primitive type. Many of those conversions, however, are not possible. As a result, a call to the M:System.Convert.ToBoolean(System.DateTime) method, for instance, throws a T:System.NotSupportedException exception because there is no possible conversion between a T:System.DateTime and a T:System.Boolean value

To eliminate the exception, you should eliminate the method call.

The method call is not supported given the state of the object.

You are attempting to invoke a member whose functionality is unavailable because of the object's state. You can eliminate the exception in one of three ways:

  • You know the state of the object in advance, but you've invoked an unsupported method or property. In this case, the member invocation is an error, and you can eliminate it.

  • You know the state of the object in advance (usually because your code has instantiated it), but the object is mis-configured. The following example illustrates this issue. It creates a read-only T:System.IO.FileStream object and then attempts to write to it.

    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()
    

    You can eliminate the exception by ensuring that the instantiated object supports the functionality you intend. The following example addresses the problem of the read-only T:System.IO.FileStream object by providing the correct arguments to the M:System.IO.FileStream.#ctor(System.String,System.IO.FileMode,System.IO.FileAccess) constructor.

  • You don't know the state of the object in advance, and the object doesn't support a particular operation. In most cases, the object should include a property or method that indicates whether it supports a particular set of operations. You can eliminate the exception by checking the value of the object and invoking the member only if appropriate.

    The following example defines a DetectEncoding method that throws a T:System.NotSupportedException exception when it attempts to read from the beginning of a stream that does not support read access.

    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()
    

    You can eliminate the exception by examining the value of the P:System.IO.FileStream.CanRead property and exiting the method if the stream is read-only.

       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
    

The T:System.NotSupportedException exception is closely related to two other exception types;

NotImplementedException.

This exception is thrown when a method could be implemented but is not, either because the member will be implemented in a later version, the member is not available on a particular platform, or the member belongs to an abstract class and a derived class must provide an implementation.

InvalidOperationException

This exception is thrown in scenarios in which it is generally sometimes possible for the object to perform the requested operation, and the object state determines whether the operation can be performed.

When working with the Compact and using P/Invoke on a native function, this exception may be thrown if:

  • The declaration in managed code is incorrect.

  • The Compact does not support what you are trying to do.

  • The DLL names are mangled on export.

If a M:System.NotSupportedException.#ctor exception is thrown, check:

  • For any violations of the Compact P/Invoke restrictions.

  • For any arguments that require pre-allocated memory. If these exist, you should pass a reference to an existing variable.

  • That the names of the exported functions are correct. This can be verified with DumpBin.exehttps://msdn.microsoft.com/library/c1h23y6c.aspx.

  • That you are not attempting to pass too many arguments.

Plataforma Universal do Windows
Disponível desde 8
.NET Framework
Disponível desde 1.1
Biblioteca de Classes Portátil
Com suporte no: plataformas portáteis do .NET
Silverlight
Disponível desde 2.0
Windows Phone Silverlight
Disponível desde 7.0
Windows Phone
Disponível desde 8.1

Quaisquer membros estáticos públicos ( Compartilhado no Visual Basic) desse tipo são thread-safe. Não há garantia de que qualquer membro de instância seja thread-safe.

Retornar ao início
Mostrar: