最近我重构将使用专用USB设备中的.NET程序。该设备带有一个DLL通信。该DLL用c编写,通过检查头文件,它定义了一组错误返回码。异常或错误代码枚举
与设备通讯的第一步是打开设备。
在DLL,open函数如下:
// return different codes, such as OK, ERROR_CANNOT_CLAIM_INTERFACE, etc.
int DLL_Open();
在.NET程序,它使用了错误代码例外:
// Return true if succeed. Throw exception if there is error.
bool Open()
{
int flag = DLL_Open();
if(flag == OK) return true;
else
{
if(flag == ERROR_CANNOT_CLAIM_INTERFACE)
throw USBException();
// ...
}
}
我的问题是,为什么要使用异常,而不是简单地使用错误代码作为dll API?我读提到“不要使用异常来控制应用程序流”的一些文章,我觉得这里的例外是那种喜欢控制流量。