Microsoft .NET 服务点(POS for .NET)中的错误处理建立在引发和捕获异常的面向对象的模型之上。 在响应运行时错误时,会引发不同的异常,每个异常都包含以ErrorCode形式触发该异常的相关错误信息。
引发异常的 ErrorCode 属性包含有关错误原因的信息。 此属性的可能值表示完整的标准统一点服务点 (UnifiedPOS) 错误代码集。 有关 UnifiedPOS 错误代码与 POS for .NET ErrorCode 值之间的映射的详细信息,请参阅 POS for .NET 异常类。
POS for .NET 提供四个异常类来帮助应用程序更好地处理错误。 这些是PosException,PosControlException和PosManagementExceptionPosLibraryException:
- PosException 是包含常规异常数据的抽象类。 PosException 在 .NET Framework 中履行与 System.Exception 类类似的角色,并且是 UnifiedPOS 规范中 UposException 类的 .NET 实现的 POS。 .NET 异常类的所有其他 POS 都派生自 PosException。
- PosControlException 是 POS 为 .NET 服务对象引发的标准异常。 PosControlException 包含一个 ErrorCode 属性,该属性包含有关异常原因的信息。
- PosLibraryException 保存 PosExplorer 在类作过程中生成的异常数据。 PosLibraryException 不包含 ErrorCode 属性。
- PosManagementException 保存 POS 为 .NET 管理 API 生成的异常数据。 PosManagementException 不包含 ErrorCode 属性。
POS for .NET 中的错误处理
POS for .NET 中的错误处理符合 UnifiedPOS 规范准则。 错误处理是事件驱动的,使用错误代码来存储异常信息,并且基本上特定于实现。
处理 POS for .NET 中的错误遵循以下常规过程:
由事件驱动的输入引发错误。
设备更改其 State 属性以指示它遇到错误。
ErrorEvent 事件已排队,以通知应用程序发生错误。 ErrorEvent 将添加到队列的末尾。
如果一个或多个 DataEvent 事件排在 ErrorEvent 事件前面,则另一个 ErrorEvent 将排队并在队列的头添加。 这会快速向应用程序发出错误警告,以便它能在处理任何排队的DataEvents之前,以特定于实现的方式作出响应。
如果应用程序属性配置为接受事件(DataEventEnabled 为 true 且FreezeEvents为 false),则它以属性确定的方式响应 ErrorResponse 事件,如下表所示。
价值 响应的含义 Clear 清除任何缓冲的 DataEvent 事件和 ErrorEvent 事件,退出错误状态,并将设备状态更改为“空闲”。 继续输入 确认错误并指示设备继续处理。 设备仍处于“错误”状态,并将按 DataEventEnabled 属性指示提供其他数据事件。 当所有输入都已传递并且 DataEventEnabled 属性再次设置为 true 时,会使用 locus Input 传递另一个 ErrorEvent。 重试 指示设备重试输入。 错误状态已退出,状态更改为“空闲”。 仅当设备章节专门允许它,以及当locus 为 Input 时,才会选择此响应。 应用程序可能还会采取特定实现的步骤来响应错误。