在 C# 中处理 TimeSpan 异常
Posted
技术标签:
【中文标题】在 C# 中处理 TimeSpan 异常【英文标题】:Handling TimeSpan Exception in c# 【发布时间】:2015-12-03 09:38:09 【问题描述】:我有以下这些代码行。
if (TimeSpan.ParseExact((VSFlexShift.get_TextMatrix(VSFlexShift.Row, 2)), @"hh\:mm\:ss", CultureInfo.InvariantCulture) > TimeSpan.MaxValue)
我写它是为了检查最终用户是否将时间键入为12:68:56
一些类似的东西应该return;
。
但是现在发生的是代码直接捕获Exception
。有什么办法可以让我只在循环内处理它而不是去Catch(Exception ex)
。
异常消息:
无法解析 TimeSpan,因为至少有一个数字 组件超出范围或包含太多数字。
【问题讨论】:
您可以使用TimeSpan.TryParse
或TimeSpan.TryParseExact
方法来检查您的输入是否有效。
【参考方案1】:
您正在寻找等效的 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
对象不能大于它自己的最大值。
【讨论】:
以上是关于在 C# 中处理 TimeSpan 异常的主要内容,如果未能解决你的问题,请参考以下文章