我正在寫一個程序來讀取連接到我的汽車的藍牙OBDII加密狗的數據。我有一個OBDII助手類負責獲取特定的車輛數據。我寫的所有方法都返回一個可爲空的類型;我的想法是,當我使用這個類時,我可以通過檢查null來處理錯誤。這裏有兩個樣本:錯誤返回可爲null的類型是不好的做法嗎?
private byte?[] getPIDData(string pid)
{
string data = sendMessage(pid);
string[] bytes = data.Split(' ');
try
{
byte?[] convertedData = new byte?[bytes.Length - 2];
for(int i = 2; i < bytes.Length; i++)
{
convertedData[i - 2] = Convert.ToByte(bytes[i], 16);
}
return convertedData;
}
catch(FormatException)
{
return null;
}
}
public double? GetEngineLoad()
{
byte?[] data = getPIDData("0104");
if (data == null)
return null;
return (100.0/255.0) * (double)(data[0]);
}
這是不好的做法/有沒有更好的方式消耗這些方法時,指示錯誤?
爲什麼要通過檢查null來處理錯誤?只是拋出(或不捕捉)例外。然後你的消費者實際上得到一個*特定的*錯誤類型,消息和堆棧跟蹤。 – Blorgbeard
如何檢查空「處理錯誤」?它沒有告訴你有關錯誤的任何信息。 – David
我想處理錯誤是不正確的術語。我將成爲唯一一個使用這個類的人,所以我主要將使用空返回值作爲出錯的指示。然而,儘管我知道我是唯一一個正在上課的人,但我還是願意按照「本書」的方式去做,以便將來可以參考。 –