2015-12-03 68 views
3

我有以下幾行代碼。在c中處理TimeSpan異常#

if (TimeSpan.ParseExact((VSFlexShift.get_TextMatrix(VSFlexShift.Row, 2)), @"hh\:mm\:ss", CultureInfo.InvariantCulture) > TimeSpan.MaxValue) 

我寫檢查,如果終端用戶類型時間12:68:56有些什麼樣的這一點,應該return;。 但是現在發生的事情是代碼直接抓到Exception。有沒有辦法讓我可以在循環內處理它,而不是去Catch(Exception ex)

異常消息:

時間跨度不能被解析,因爲數字 部件中的至少一個超出範圍或包含位數過多。

+2

您可以使用'TimeSpan.TryParse'或'TimeSpan.TryParseExact'方法檢查您的輸入是否有效。 –

回答

4

您正在尋找的等效TimeSpan.TryParseExact返回的bool而不是拋出異常:

TimeSpan timeSpan; 
if (!TimeSpan.TryParseExact(VSFlexShift.get_TextMatrix(VSFlexShift.Row, 2), 
    @"hh\:mm\:ss", CultureInfo.InvariantCulture, out timeSpan)) 
{ 
    // TimeSpan isn't valid. 
} 

關於> TimeSpan.MaxValue,我真的不知道爲什麼你要檢查什麼,但TimeSpan對象不能大於它自己的最大值。