dotnetCampus.Ipc
dotnetCampus.Ipc copied to clipboard
此 IPC 库的异常处理原则
异常类型
-
IpcException
抽象异常,永远不应该抛出,只允许被catch
-
IpcRemoteException
表示异常来自可正常连接并通信的其他端-
IpcInvalidRemoteRequestException
当 IPC 收到来自其他端的请求时,此请求无法被理解 -
IpcInvalidRemoteResponseException
当 IPC 向其他端发起请求并收到其他端的响应后,此响应无法被理解 - 具体被序列化和反序列化的异常 当其他端引发了异常,并通过 IPC 传过来时,此异常会被反序列化并重新抛出
-
IpcRemoteException
当其他端引发了异常,并通过 IPC 传过来时,如果此异常无法被反序列化,则抛出此异常
-
-
IpcConnectionException
表示 IPC 无法正常连接其他端,或连接被断开 -
IpcLocalException
表示异常发生在开始 IPC 通信之前或已完成 IPC 通信之后的本地,并且此异常表示 IPC 相关的错误(例如试图传输无法被序列化的类型等)
-
特别说明
框架内也可能会发生一些意料之外的异常。如果该异常发生在开始 IPC 通信之前或已完成 IPC 通信之后的本地,则应抛出 IpcLocalException
,如果该异常发生在其他端但无法反序列化到本地,则抛出 IpcRemoteException
。
框架应该适当抛出使用错误的异常(例如 ArgumentNullException
、InvalidOperationException
、NotSupportedException
等),但不应该抛出实现异常(例如 InvaldCastException
、NullReferenceException
等)。如果出现后者,能处理的应正确处理,不能处理的应抛出 IpcLocalException
或 IpcRemoteException
。
框架应正确处理 null 或 default,必须拥有正确的含义且不能与 IPC 传输的有意义的 null 或 default 混淆。