我最近在我的代碼中遇到了一個異常,因爲我正在修剪一個空字符串。 我將它替換爲以下內容:這個修剪代碼可能會失敗嗎?
SomeValue = (SomeString ?? "").Trim();
此代碼是否會失敗?
謝謝。
注:我知道我可以添加一個try/catch;我只是希望在不使用try/catch的情況下使這條線路具有防故障功能。
我最近在我的代碼中遇到了一個異常,因爲我正在修剪一個空字符串。 我將它替換爲以下內容:這個修剪代碼可能會失敗嗎?
SomeValue = (SomeString ?? "").Trim();
此代碼是否會失敗?
謝謝。
注:我知道我可以添加一個try/catch;我只是希望在不使用try/catch的情況下使這條線路具有防故障功能。
這不會失敗(即拋出NullReferenceException
),假設SomeString
確實是一個string
。
你可以達到同樣在許多方面:
SomeValue = (SomeString == null)?string.Empty:SomeString.Trim();
這不是我會這樣做的方式,但不是,現在不應該失敗。
我可能會寫一個擴展方法,在檢查null之後調用trim。事情是這樣的:
public static string NullTrim(this String str) {
if(str == null) {
return string.Empty;
}
return str.Trim();
}
這使得所有的下列編譯和執行沒有錯誤:
"".NullTrim();
" test ".NullTrim();
((string)null).NullTrim();
好的,謝謝你的想法;目前我正在與我擁有的路線走。 – frenchie
那麼,如果有人因爲NullReferenceException
失敗,那麼現在肯定不會失敗因爲的。至於其他方面,我不能說沒有背景。
你能寫一些小的單元測試來測試嗎? –
我懷疑你的範圍內的答案是否定的,它不會失敗。正常操作失敗的唯一原因是內存不足。 –
它以更加怪誕的方式失敗。它產生垃圾數據,你不會知道它。 –