扩展类型系统中的错误和异常

在初始化类型数据期间以及访问 PSObject 对象的成员或使用 LanguagePrimitives等实用工具类之一时,ETS 中可能会出现错误。

运行时错误

在强制转换时,在运行时从 ETS 引发的所有异常都是 ExtendedTypeSystemException 异常,或者是派生自 ExtendedTypeSystemException 类的异常。 这样,脚本开发人员就可以在其脚本中使用 trap 语句捕获这些异常。

获取成员值时出错

获取 ETS 成员(属性、方法或参数化属性)的值时发生的所有错误都会导致引发 GetValueExceptionGetValueInvocationException 异常。 当 ETS 发现发生错误时,将引发 GetValueException 异常。 当被引用成员的基础 getter 识别出发生错误时,将引发 GetValueInvocationException 异常,该异常可能包含或不包含导致获取调用错误的内部异常。

设置成员值时出错

设置 ETS 属性值时发生的所有错误都会导致引发 SetValueExceptionSetValueInvocationException 异常。 当 ETS 发现发生错误时,将引发 SetValueException 异常。 当被引用属性的基础 setter 识别出发生错误时,将引发 SetValueInvocationException 异常,该异常可能包含或不包含导致设置调用错误的内部异常。

调用方法时出错

调用 ETS 方法时发生的所有错误都会导致引发 MethodExceptionMethodInvocationException 异常。 当 ETS 发现发生错误时,将引发 MethodException 异常。 当被引用的方法识别出发生错误时,将引发 MethodInvocationException 异常,该异常可能包含或不包含导致调用错误的内部异常。

强制转换错误

尝试无效强制转换时,将引发 PSInvalidCastException。 由于此异常派生自 system.InvalidCastException ,因此无法直接从脚本中捕获该异常。 请注意,尝试强制转换的实体需要在 PSRuntimeException 中包装 PSInvalidCastException,以便脚本可捕获。 如果尝试设置 PSPropertySet的值,PSMemberSetPSMethodInfoReadOnlyPSMemberInfoCollection'1的成员,则会引发 NotSupportedException

常见运行时错误

发生的任何其他常见运行时错误都是类型 ExtendedTypeSystemException 异常,没有其他特定异常类型。

初始化错误

初始化 types.ps1xml时可能会出现错误。 通常,在 PowerShell 运行时启动时显示这些错误。 但是,加载模块时也可以显示它们。