在 C# 中处理 TimeSpan 异常
Handling TimeSpan Exception in c#
我有下面这些代码行。
if (TimeSpan.ParseExact((VSFlexShift.get_TextMatrix(VSFlexShift.Row, 2)), @"hh\:mm\:ss", CultureInfo.InvariantCulture) > TimeSpan.MaxValue)
我写的是为了检查最终用户是否将时间输入为 12:68:56
有些像这样它应该 return;
。
但是现在发生的是代码直接捕获 Exception
。有什么办法可以让我只在循环内处理它而不是去 Catch(Exception ex)
.
异常消息:
The TimeSpan could not be parsed because at least one of the numeric
components is out of range or contains too many digits.
您正在寻找 TimeSpan.TryParseExact
的等价物 returns a 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
对象不能大于它自己的最大值。
我有下面这些代码行。
if (TimeSpan.ParseExact((VSFlexShift.get_TextMatrix(VSFlexShift.Row, 2)), @"hh\:mm\:ss", CultureInfo.InvariantCulture) > TimeSpan.MaxValue)
我写的是为了检查最终用户是否将时间输入为 12:68:56
有些像这样它应该 return;
。
但是现在发生的是代码直接捕获 Exception
。有什么办法可以让我只在循环内处理它而不是去 Catch(Exception ex)
.
异常消息:
The TimeSpan could not be parsed because at least one of the numeric components is out of range or contains too many digits.
您正在寻找 TimeSpan.TryParseExact
的等价物 returns a 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
对象不能大于它自己的最大值。