最近我重構將使用專用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?我讀提到「不要使用異常來控制應用程序流」的一些文章,我覺得這裏的例外是那種喜歡控制流量。