我正在围绕一个本地C库创建一个C#包装器库,该库允许我通过串行(COM)端口直接与特定的硬件进行通信。
当然,C库从其方法返回成功/失败代码。我想将这些转换为异常,但我很难找到构建在.Net框架中的适当异常。(我尽可能地使用现有的异常类型。)
考虑到这个库的存在是为了将数据从硬件流到pc并向硬件发送命令,我正在考虑从System.IO.IOException
派生一些新的异常类型。这毕竟是输入/输出,但考虑到现有的IOException类型都与从文件中读取有关,这并不是“正确的”。
我想要写的代码的一个例子:
if (!NativeMethods.ConnectToDevice(deviceName)
{
var message = NativeMethods.GetLastErrorMessage();
throw new ConnectionException(message);
}
其中ConnectionException
是从IOException
派生的。
发布于 2016-05-06 13:50:06
我维护了大量的类集合,他们使用多种通信接口进行接口和包装,从票据接受者和打印机到自定义电路板。我认为你应该选择最能描述问题起因的例外。例如,如果字节的参数不匹配,那么抛出一个(可选派生的) System.IO
异常,因为它是由COM接口而不是COM设备引起的。但是,如果这是设备抛出的错误,如果您可以知道通过它们提供的API,那么我将生成一个从Exception
派生的异常类,并抛出这些异常。在我的例子中,一个汇票承兑者如果没有收到它的邮件,则是一个不同的例外,它的消息的奇偶性很差。
https://softwareengineering.stackexchange.com/questions/317512
复制相似问题