我正在開發C#.NET Framework 4.0庫。你會在這裏做什麼?返回null或拋出異常(框架設計指南)
我有這樣的代碼:
public static byte GetBatchStatus(string connString)
{
if (string.IsNullOrEmpty(connString))
throw new ArgumentNullException("connString");
byte status;
using (System.Data.SqlClient.SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
{
conn.Open();
SqlCommand cmd = new SqlCommand();
cmd.CommandText = GetBatchStatusValueSQL;
cmd.CommandType = CommandType.Text;
cmd.Connection = conn;
object o = cmd.ExecuteScalar();
// Throws an ArgumentNullException if o is null.
if (o == null)
throw new ArgumentNullException("o");
status = Convert.ToByte(o);
}
return status;
}
cmd.ExecuteScalar();
可以返回null,但Convert.ToByte(o);
返回0
如果cmd.ExecuteScalar();
返回null它的一個錯誤,因爲我正在尋找的價值必須在數據庫。如果該值不在數據庫上,則爲錯誤。
你會在這裏做什麼?返回null或拋出異常?
這個'哲學'問題更適合程序員,而不是在計算器中。 – kurast
它應該拋出異常,因爲cmd.ExecuteScalar()返回null描述了一箇中斷(將記錄放入數據庫時未捕獲),並且應該在找到時提出。 –
這與你的問題沒有關係,但是在連接字符串中傳遞了最佳設計?似乎應該是類的屬性(假設它是某種類型或存儲庫或DAL),或者是配置的一部分(應用程序)。config或web.config)。 –