Este artículo se tradujo automáticamente. Para ver el artículo en inglés, active la casilla Inglés. Además, puede mostrar el texto en inglés en una ventana emergente si mueve el puntero del mouse sobre el texto.
Traducción
Inglés

Clase NotSupportedException

 

Publicado: octubre de 2016

Excepción que se produce cuando un método invocado no es compatible o cuando se intenta leer, buscar o escribir en una secuencia que no es compatible con las funciones invocadas.

Espacio de nombres:   System
Ensamblado:  mscorlib (en mscorlib.dll)

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

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

NombreDescripción
System_CAPS_pubmethodNotSupportedException()

Inicializa una nueva instancia de la NotSupportedException clase, estableciendo la Message Propiedades de la nueva instancia en un mensaje proporcionado por el sistema que describe el error. Este mensaje tiene en cuenta la referencia cultural del sistema actual.

System_CAPS_protmethodNotSupportedException(SerializationInfo, StreamingContext)

Inicializa una nueva instancia de la clase NotSupportedException con datos serializados.

System_CAPS_pubmethodNotSupportedException(String)

Inicializa una nueva instancia de la clase NotSupportedException con el mensaje de error especificado.

System_CAPS_pubmethodNotSupportedException(String, Exception)

Inicializa una nueva instancia de la clase NotSupportedException con el mensaje de error especificado y una referencia a la excepción interna que representa la causa de esta excepción.

NombreDescripción
System_CAPS_pubpropertyData

Obtiene una colección de pares clave-valor que proporcionan más información definida por el usuario sobre la excepción.(Heredado de Exception).

System_CAPS_pubpropertyHelpLink

Obtiene o establece un vínculo al archivo de ayuda asociado a esta excepción.(Heredado de Exception).

System_CAPS_pubpropertyHResult

Obtiene o establece HRESULT, un valor numérico codificado que se asigna a una excepción específica.(Heredado de Exception).

System_CAPS_pubpropertyInnerException

Obtiene la instancia Exception que produjo la excepción actual.(Heredado de Exception).

System_CAPS_pubpropertyMessage

Obtiene un mensaje que describe la excepción actual.(Heredado de Exception).

System_CAPS_pubpropertySource

Devuelve o establece el nombre de la aplicación o del objeto que generó el error.(Heredado de Exception).

System_CAPS_pubpropertyStackTrace

Obtiene una representación de cadena de los marcos inmediatos en la pila de llamadas.(Heredado de Exception).

System_CAPS_pubpropertyTargetSite

Obtiene el método que produjo la excepción actual.(Heredado de Exception).

NombreDescripción
System_CAPS_pubmethodEquals(Object)

Determina si el objeto especificado es igual al objeto actual.(Heredado de Object).

System_CAPS_protmethodFinalize()

Permite que un objeto intente liberar recursos y realizar otras operaciones de limpieza antes de ser reclamado por el recolector de basura. (Heredado de Object).

System_CAPS_pubmethodGetBaseException()

Cuando se invalida en una clase derivada, devuelve la clase Exception que representa la causa principal de una o más excepciones posteriores.(Heredado de Exception).

System_CAPS_pubmethodGetHashCode()

Sirve como la función hash predeterminada.(Heredado de Object).

System_CAPS_pubmethodGetObjectData(SerializationInfo, StreamingContext)

Cuando se invalida en una clase derivada, establece SerializationInfo con información sobre la excepción.(Heredado de Exception).

System_CAPS_pubmethodGetType()

Obtiene el tipo en tiempo de ejecución de la instancia actual.(Heredado de Exception).

System_CAPS_protmethodMemberwiseClone()

Crea una copia superficial del Object actual.(Heredado de Object).

System_CAPS_pubmethodToString()

Crea y devuelve una representación de cadena de la excepción actual.(Heredado de Exception).

NombreDescripción
System_CAPS_proteventSerializeObjectState

Ocurre cuando una excepción se serializa para crear un objeto de estado de excepción que contenga datos serializados sobre la excepción.(Heredado de Exception).

NotSupportedException indica que no existe ninguna implementación para un método invocado o propiedad.

NotSupportedException utiliza HRESULT COR_E_NOTSUPPORTED, que tiene el valor 0 x 80131515.

Para obtener una lista de valores de propiedad iniciales de una instancia de NotSupportedException, consulte el NotSupportedException constructores.

Puede considerar la posibilidad de producir una NotSupportedException excepciones en los casos siguientes:

  • Está implementando una interfaz general y número de los métodos no tiene ninguna implementación significativa. Por ejemplo, si está creando una fecha y hora tipo que implementa el IConvertible interfaz, se podría producir un NotSupportedException excepción para la mayoría de las conversiones.

  • Ha heredado de una clase abstracta que requiere que se reemplace un número de métodos. Sin embargo, sólo está preparado para proporcionar una implementación para un subconjunto de ellos. Para los métodos que no desea implementar, puede producir un NotSupportedException.

  • Está definiendo un tipo de uso general con un estado que permite operaciones de forma condicional. Por ejemplo, el tipo puede ser de sólo lectura o lectura y escritura. En ese caso:

    • Si el objeto es de solo lectura, el intento de asignar valores a las propiedades de una instancia o llamada a métodos que modifican el estado de la instancia debe producir una NotSupportedException excepción.

    • Debe implementar una propiedad que devuelve una Boolean valor que indica si la funcionalidad concreta está disponible. Por ejemplo, para un tipo que puede ser de sólo lectura o lectura y escritura, podría implementar un IsReadOnly propiedad que indica si el conjunto de métodos de lectura y escritura están disponibles o no.

El NotSupportedException excepción indica que un método no tiene ninguna implementación y que no debe llamarlo. No se debe controlar la excepción. En su lugar, lo que debe hacer depende de la causa de la excepción: si una implementación es completamente ausente o la invocación del miembro no es coherente con el objetivo de un objeto (como una llamada a la FileStream.Read método de sólo lectura FileStream objeto.

No se ha proporcionado una implementación porque no se puede realizar la operación de forma significativa.

Ésta es una excepción común al que se llama a métodos en un objeto que proporciona implementaciones para los métodos de una clase base abstracta o que implementa una interfaz general y el método no tiene ninguna implementación significativa.

Por ejemplo, el Convert la clase implementa la IConvertible interfaz, lo que significa que debe incluir un método para convertir cada tipo primitivo a todos los tipos primitivos. Sin embargo, muchas de esas conversiones no son posibles. Como resultado, una llamada a la Convert.ToBoolean(DateTime) método, por ejemplo, se produce un NotSupportedException excepción porque no hay ninguna conversión posibles entre un DateTime y un Boolean valor

Para eliminar la excepción, debe eliminar la llamada al método.

La llamada al método no se admite el estado del objeto.

Intenta invocar a un miembro cuya funcionalidad no está disponible a causa del estado del objeto. Puede eliminar la excepción en uno de tres maneras:

  • Se sabe con antelación el estado del objeto, pero se ha invocado una propiedad o método no admitido. En este caso, la invocación del miembro es un error y se puede eliminar.

  • Saber de antemano el estado del objeto (normalmente porque el código lo ha instanciado), pero el objeto no está bien configurado. En el ejemplo siguiente se muestra este problema. Crea un solo lectura FileStream objeto y, a continuación, intenta escribir en él.

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

    Puede eliminar la excepción asegurándose de que el objeto con instancias admite la funcionalidad que se piensa. En el ejemplo siguiente se corrige el problema de sólo lectura FileStream objeto proporcionando los argumentos correctos para el FileStream.FileStream(String, FileMode, FileAccess) constructor.

  • No sabe de antemano el estado del objeto y el objeto no admite una operación determinada. En la mayoría de los casos, el objeto debe incluir una propiedad o método que indica si admite un conjunto determinado de operaciones. Puede eliminar la excepción al comprobar el valor del objeto e invocar al miembro, si procede.

    En el ejemplo siguiente se define un DetectEncoding método que produce una NotSupportedException excepción al intentar leer desde el principio de una secuencia que no admite el acceso de lectura.

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

    Puede eliminar la excepción examinando el valor de la FileStream.CanRead la propiedad y el método existente si la secuencia es de sólo lectura.

       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
    

El NotSupportedException excepción está estrechamente relacionada con dos tipos de excepción;

NotImplementedException.

Esta excepción se produce cuando un método se puede implementar, pero no lo es, bien porque el miembro se implementará en una versión posterior, el miembro no está disponible en una plataforma concreta, o el miembro pertenece a una clase abstracta y una clase derivada debe proporcionar una implementación.

InvalidOperationException

Esta excepción se produce en situaciones en que generalmente a veces es posible que el objeto que se va a realizar la operación solicitada y el estado del objeto determina si se puede realizar la operación.

Al trabajar con .NET Compact Framework y usar P/Invoke en una función nativa, se puede producir esta excepción si:

  • La declaración en código administrado es incorrecta.

  • .NET Compact Framework no admite lo que se intenta hacer.

  • Los nombres del archivo DLL tienen un sufijo en exportación.

Si un NotSupportedException se produce una excepción, compruebe:

  • Alguna infracción a las restricciones P/Invoke de .NET Compact Framework.

  • Algún argumento que requiera memoria previamente asignada. Si éstos existen, debe pasar una referencia a una variable existente.

  • Que los nombres de las funciones exportadas sean correctos. Esto se puede comprobar con DumpBin.exe.

  • Que no intenta pasar demasiados argumentos.

Plataforma universal de Windows
Disponible desde 8
.NET Framework
Disponible desde 1.1
Biblioteca de clases portable
Se admite en: plataformas portátiles de .NET
Silverlight
Disponible desde 2.0
Windows Phone Silverlight
Disponible desde 7.0
Windows Phone
Disponible desde 8.1

Cualquier miembro ( Compartido en Visual Basic) estático público de este tipo es seguro para subprocesos. No se garantiza que los miembros de instancia sean seguros para subprocesos.

Volver al principio
Mostrar: