在 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.TryParseTimeSpan.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 异常的主要内容,如果未能解决你的问题,请参考以下文章

如何将 ISO8601 TimeSpan 转换为 C# TimeSpan?

C# Stopwatch与TimeSpan详解(转)

正则匹配超时处理

C# Timespan - 用户定义的客户格式说明符

C#格式化TimeSpan以显示日期[重复]

C# 4.0:我可以使用 TimeSpan 作为具有默认值的可选参数吗?