在這個特定的應用程序中,沒有單獨的數據層,數據訪問代碼位於實體本身中。例如,考慮一個客戶實體,然後在Customer.cs文件,其中的成員和屬性的定義,則必須方法來加載客戶對象,如下當數據庫的數據不好時,應該拋出異常嗎?
public bool TryLoad(int customerID, out Customer customer)
{
bool success = false
try
{
//code which calls the db and fills a SqlDataReader
ReadDataFromSqlDataReader(reader);
success = true;
}
catch(Exception ex)
{
LogError();
success = false;
}
return success;
}
現在,在ReadDataFromSqlDataReader(讀取器),的TryParse用於將數據從閱讀器加載到對象中。例如
public void ReadDataFromSqlDataReader(reader)
{
int.TryParse(reader["CustomerID"].ToString(), out this.CustomerID);
PhoneNumber.TryParse(reader["PhoneNumber"].ToString(), out this.PhoneNumber);
... similar TryParse code for all the other fields..
}
正在使用TryParse來讀取讀者的所有屬性一個很好的做法?一位開發者告訴我,它以TryParse的方式完成比int.Parse更好的性能。但是當你從數據庫中讀取的值不符合你的代碼所期望的值時,你是否想要拋出異常?我的意思是在這種情況下,如果數據庫中有錯誤的電話號碼,那麼可能對象不應該被初始化,而是用一個空的電話號碼加載一個對象?
聽起來特殊 – Jodrell 2012-04-17 14:39:42
如果您想要處理不良數據,'TryParse'只有更好的'Parse'性能。 – user7116 2012-04-17 14:41:03
我無法想象表演有什麼不同。它吞下異常,因此實際上包含了您將在外部使用.Parse寫入的相同代碼。 – 2012-04-17 14:41:51