확장 형식 시스템의 오류 및 예외

형식 데이터를 초기화하는 동안 및 PSObject 개체의 멤버에 액세스하거나 LanguagePrimitives같은 유틸리티 클래스 중 하나를 사용하는 경우 ETS에서 오류가 발생할 수 있습니다.

런타임 오류

한 가지 예외를 제외하고 런타임 중에 ETS에서 throw되는 모든 예외는 ExtendedTypeSystemException 예외이거나 ExtendedTypeSystemException 클래스에서 파생된 예외입니다. 이렇게 하면 스크립트 개발자가 스크립트의 trap 문을 사용하여 이러한 예외를 트래핑할 수 있습니다.

멤버 값을 가져오는 동안 오류가 발생했습니다.

ETS 멤버(속성, 메서드 또는 매개 변수가 있는 속성)의 값을 가져올 때 발생하는 모든 오류로 인해 GetValueException 또는 GetValueInvocationException 예외가 throw됩니다. ETS에서 오류가 발생했음을 인식하면 GetValueException 예외가 throw됩니다. 참조된 멤버의 기본 getter가 오류가 발생했음을 인식하면 get 호출 오류를 발생시킨 내부 예외를 포함하거나 포함하지 않을 수 있는 GetValueInvocationException 예외가 throw됩니다.

멤버 값을 설정하는 동안 오류가 발생했습니다.

ETS 속성의 값을 설정할 때 발생하는 모든 오류로 인해 SetValueException 또는 setValueInvocationException 예외가 throw될 있습니다. ETS에서 오류가 발생했음을 인식하면 SetValueException 예외가 throw됩니다. 참조된 속성의 기본 setter가 오류가 발생했음을 인식하면 setValueInvocationException 예외가 throw되어 집합 호출 오류를 발생시킨 내부 예외가 포함되거나 포함되지 않을 수 있습니다.

메서드를 호출하는 오류

ETS 메서드를 호출할 때 발생하는 모든 오류로 인해 MethodException 또는 MethodInvocationException 예외가 throw됩니다. ETS에서 오류가 발생했음을 인식하면 MethodException 예외가 throw됩니다. 참조된 메서드가 오류가 발생했음을 인식하면 호출 오류를 발생시킨 내부 예외를 포함하거나 포함하지 않을 수 있는 MethodInvocationException 예외가 throw됩니다.

캐스팅 오류

잘못된 캐스트를 시도하면 PSInvalidCastException throw됩니다. 이 예외는 System.InvalidCastException파생되므로 스크립트에서 직접 트래핑할 수 없습니다. 캐스팅을 시도하는 엔터티는 스크립트로 트래핑할 수 있도록 PSRuntimeException PSInvalidCastException 래핑해야 합니다. PSPropertySet, PSMemberSet, PSMethodInfo또는 ReadOnlyPSMemberInfoCollection'1멤버의 값을 설정하려고 하면 NotSupportedException throw됩니다.

일반적인 런타임 오류

발생하는 다른 일반적인 런타임 오류는 추가적인 특정 예외 유형이 없는 ExtendedTypeSystemException 예외입니다.

초기화 오류

types.ps1xml초기화할 때 오류가 발생할 수 있습니다. 일반적으로 이러한 오류는 PowerShell 런타임이 시작될 때 표시됩니다. 그러나 모듈을 로드할 때 표시할 수도 있습니다.