이 문서는 기계 번역을 이용하여 번역되었습니다. 문서를 영문으로 보려면 영문 확인란을 선택하세요. 마우스 포인터를 텍스트 위로 이동시켜 팝업 창에서 영문 텍스트를 표시할 수도 있습니다.
번역
영문

NotSupportedException 클래스

 

게시 날짜: 2016년 11월

호출한 메서드가 지원되지 않는 경우 또는 호출한 기능을 지원하지 않는 스트림에 대해 읽기, 찾기 또는 쓰기 작업을 수행하려는 경우에 throw되는 예외입니다.

네임스페이스:   System
어셈블리:  mscorlib(mscorlib.dll에 있음)

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

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

이름설명
System_CAPS_pubmethodNotSupportedException()

새 인스턴스를 초기화는 NotSupportedException 클래스는 Message 오류를 설명 하는 시스템 제공 메시지로 새 인스턴스의 속성입니다. 이 메시지는 현재 시스템 문화권을 고려합니다.

System_CAPS_protmethodNotSupportedException(SerializationInfo, StreamingContext)

serialize된 데이터를 사용하여 NotSupportedException 클래스의 새 인스턴스를 초기화합니다.

System_CAPS_pubmethodNotSupportedException(String)

지정된 오류 메시지를 사용하여 NotSupportedException 클래스의 새 인스턴스를 초기화합니다.

System_CAPS_pubmethodNotSupportedException(String, Exception)

지정된 오류 메시지와 해당 예외의 원인인 내부 예외에 대한 참조를 사용하여 NotSupportedException 클래스의 새 인스턴스를 초기화합니다.

이름설명
System_CAPS_pubpropertyData

예외에 대한 사용자 정의 추가 정보를 제공하는 키/값 쌍의 컬렉션을 가져옵니다.(Exception에서 상속됨)

System_CAPS_pubpropertyHelpLink

이 예외와 연결된 도움말 파일에 대한 링크를 가져오거나 설정합니다.(Exception에서 상속됨)

System_CAPS_pubpropertyHResult

특정 예외에 할당된 코드화된 숫자 값인 HRESULT를 가져오거나 설정합니다.(Exception에서 상속됨)

System_CAPS_pubpropertyInnerException

현재 예외를 발생시킨 Exception 인스턴스를 가져옵니다.(Exception에서 상속됨)

System_CAPS_pubpropertyMessage

현재 예외를 설명하는 메시지를 가져옵니다.(Exception에서 상속됨)

System_CAPS_pubpropertySource

오류를 발생시키는 응용 프로그램 또는 개체의 이름을 가져오거나 설정합니다.(Exception에서 상속됨)

System_CAPS_pubpropertyStackTrace

호출 스택의 직접 실행 프레임 문자열 표현을 가져옵니다.(Exception에서 상속됨)

System_CAPS_pubpropertyTargetSite

현재 예외를 throw하는 메서드를 가져옵니다.(Exception에서 상속됨)

이름설명
System_CAPS_pubmethodEquals(Object)

지정한 개체가 현재 개체와 같은지 여부를 확인합니다. (Object에서 상속됨)

System_CAPS_protmethodFinalize()

개체가 가비지 수집자에서 회수되기 전에, 해당 개체에서 리소스를 해제하고 다른 정리 작업을 수행할 수 있게 합니다. (Object에서 상속됨)

System_CAPS_pubmethodGetBaseException()

파생 클래스에서 재정의된 경우 하나 이상의 후속 예외의 근본 원인이 되는 Exception을 반환합니다.(Exception에서 상속됨)

System_CAPS_pubmethodGetHashCode()

기본 해시 함수로 작동합니다.(Object에서 상속됨)

System_CAPS_pubmethodGetObjectData(SerializationInfo, StreamingContext)

파생 클래스에서 재정의된 경우 예외에 관한 정보를 SerializationInfo에 설정합니다.(Exception에서 상속됨)

System_CAPS_pubmethodGetType()

현재 인스턴스의 런타임 형식을 가져옵니다.(Exception에서 상속됨)

System_CAPS_protmethodMemberwiseClone()

현재 Object의 단순 복사본을 만듭니다.(Object에서 상속됨)

System_CAPS_pubmethodToString()

현재 예외에 대한 문자열 표현을 만들고 반환합니다.(Exception에서 상속됨)

이름설명
System_CAPS_proteventSerializeObjectState

예외에 대한 serialize된 데이터를 포함하는 예외 상태 개체를 만들기 위해 예외를 serialize할 때 발생합니다.(Exception에서 상속됨)

NotSupportedException 호출 된 메서드 또는 속성에 대 한 구현이 있음을 나타냅니다.

NotSupportedException 0x80131515 값이 있는 HRESULT COR_E_NOTSUPPORTED를 사용 합니다.

인스턴스에 대 한 초기 속성 값 목록은 NotSupportedException, 참조는 NotSupportedException 생성자입니다.

throw 하는 것이 좋습니다는 NotSupportedException 다음과 같은 경우에 예외:

  • 범용 인터페이스를 구현 하는 있고 메서드 의미 있는 구현 되지 않습니다. 예를 들어 만드는 경우 날짜 및 시간 입력 구현 하는 IConvertible 인터페이스를 하면 throw 되는 한 NotSupportedException 변환의 대부분에 대 한 예외입니다.

  • 에 필요한 다양 한 메서드를 재정의 하는 추상 클래스에서 상속 했습니다. 그러나 이러한 하위 집합에 대 한 구현을 제공 준비가 합니다. 구현 하지 않기로 결정 하는 메서드를 throw 하도록 선택할 수 있습니다는 NotSupportedException합니다.

  • 조건에 따라 작업을 사용 하는 상태와 일반 용도의 형식으로 정의 됩니다. 예를 들어, 형식이 읽기 전용 또는 읽기 / 쓰기 수 있습니다. 이 경우:

    • 개체가 읽기 전용인 경우 인스턴스 상태를 수정 하는 인스턴스 또는 호출 메서드의 속성에 값을 할당 해야 throw 한 NotSupportedException 예외입니다.

    • 반환 하는 속성을 구현 해야는 Boolean 특정 기능을 사용할 수 있는지 여부를 나타내는 값입니다. 예를 들어, 읽기 전용 또는 읽기 / 쓰기 될 수 있는 형식에 대해 구현할 수 있습니다는 IsReadOnly 읽기 / 쓰기 메서드 집합을 사용할 수 없거나 지 여부를 나타내는 속성입니다.

NotSupportedException 예외 나타냅니다 메서드 구현이 없는 있는지와 그 호출 하지 않아야 합니다. 예외를 처리 해서는 안 됩니다. 대신 예외의 원인에 따라 다릅니다 무엇을 해야: 여부 구현을 완전히 없거나 멤버 호출 개체 하기 위한 목적으로 일치 하지 않습니다 (호출과 같은 FileStream.Read 메서드를 읽기 전용 FileStream 개체입니다.

의미 있는 방식으로 작업을 수행할 수 없으므로 구현을 제공 하지 않은 합니다.

범용 인터페이스를 구현 하는 추상 기본 클래스의 메서드에 대 한 구현을 제공 하는 개체의 메서드를 호출 하는 경우이 일반적인 예외 및 메서드는 의미 있는 구현 되지 않습니다.

예를 들어는 Convert 클래스가 구현 하는 IConvertible 인터페이스를 통해 다른 모든 기본 형식으로 모든 기본 형식으로 변환 하는 메서드를 포함 해야 합니다. 그러나 다양 한 변환, 가능 하지 않습니다. 에 대 한 호출 결과로 Convert.ToBoolean(DateTime) 메서드, 예를 들어, throw 한 NotSupportedException 예외 사이 가능한 변환이 때문에 DateTimeBoolean

예외를 제거 하려면 메서드 호출을 제거 해야 합니다.

메서드 호출이 개체의 상태를 지정 하는 것을 지원 하지 않습니다.

개체의 상태 때문에 해당 기능을 사용할 수 없는 멤버를 호출 하려고 합니다. 세 가지 방법 중 하나에 예외를 제거할 수 있습니다.

  • 개체의 상태를 사전에 알고 있지만 지원 되지 않는 메서드 또는 속성을 호출 했습니다. 이 경우이 오류는 멤버 호출 하 고 제거할 수 있습니다.

  • 개체의 상태를 미리 파악해 두면 (일반적으로 하기 때문에 코드에는 인스턴스화된 것), 잘못 구성 했지만 개체입니다. 다음 예제에서는이 문제를 보여 줍니다. 읽기 전용 만듭니다 FileStream 개체를 만들고 다음에 쓰려고 시도 합니다.

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

    하려는 기능을 지 원하는 인스턴스화된 개체는 예외를 확인 하 여 제거할 수 있습니다. 다음 예제에서는 읽기 전용의 문제를 해결 하며 FileStream 올바른 인수를 제공 하 여 개체는 FileStream.FileStream(String, FileMode, FileAccess) 생성자입니다.

  • 알 수 없는 개체의 상태를 미리 및 개체는 특정 작업을 지원 하지 않습니다. 대부분의 경우에서 속성 또는 메서드는 특정 작업 집합을 지원 하는지 여부를 나타내는 개체가 포함 되어야 합니다. 개체의 값을 확인 하 고 적절 한 경우에 멤버를 호출 하 여 예외를 제거할 수 있습니다.

    다음 예제에서는 정의 DetectEncoding 를 throw 하는 메서드는 NotSupportedException 읽기 액세스를 지원 하지 않는 스트림의 시작 부분에서 읽으려고 하는 경우에 예외입니다.

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

    값을 검사 하 여 예외를 제거할 수는 FileStream.CanRead 속성과 스트림이 읽기 전용으로 설정 하는 경우에 메서드를 종료 합니다.

       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
    

NotSupportedException 예외는 두 예외 형식이; 밀접 한 관련이

NotImplementedException.

메서드 구현 될 수도 있지만 그렇지 않은 경우이 예외가 throw 됩니다 하거나 이후 버전에서 구현 될 멤버, 멤버는 특정 플랫폼에서 사용할 수 없는 또는 추상 클래스에 속합니다. 멤버 및 파생된 클래스에서 구현 해야 합니다.

InvalidOperationException

일반적으로 일부 경우를 요청한 작업을 수행 하는 개체에 대 한 시나리오에서이 예외는 throw 하 고 개체 상태에 따라 작업을 수행할 수 있는지 여부를 결정 합니다.

.NET Compact Framework로 작업하면서 네이티브 함수에 대해 P/Invoke를 사용할 때 다음과 같은 상황에서 이 예외가 throw될 수 있습니다.

  • 관리 코드의 선언이 올바르지 않은 경우

  • 수행하려는 작업을 .NET Compact Framework에서 지원하지 않는 경우

  • 내보내기 과정에서 DLL 이름이 손상된 경우

경우에 NotSupportedException throw 된 예외 확인:

  • .NET Compact Framework P/Invoke 제한 사항에 대한 위반 여부

  • 메모리를 미리 할당해야 하는 인수가 있는지 여부. 이러한 인수가 있으면 기존 변수에 대한 참조를 전달해야 합니다.

  • 내보낸 함수의 이름이 올바른지 여부. 이를 확인할 수 있습니다 DumpBin.exe합니다.

  • 너무 많은 인수를 전달하려 하지 않았는지 여부

유니버설 Windows 플랫폼
8 이후 사용 가능
.NET Framework
1.1 이후 사용 가능
이식 가능한 클래스 라이브러리
이식 가능한 .NET 플랫폼 에서 지원됨
Silverlight
2.0 이후 사용 가능
Windows Phone Silverlight
7.0 이후 사용 가능
Windows Phone
8.1 이후 사용 가능

이 형식의 모든 public static(Visual Basic의 공유 Visual Basic의 경우) 멤버는 스레드로부터 안전합니다. 인스턴스 멤버는 스레드로부터의 안전이 보장되지 않습니다.

맨 위로 이동
표시: