2015-12-03 4 views
3

У меня есть следующие строки кода.Обработка Исключения TimeSpan в 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).

Исключение Сообщение:

отрезок времени не может быть обработан, так как по меньшей мере один из цифровых компонентов находится вне диапазона или содержит слишком много цифр.

+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 не может быть больше, чем его собственное максимальное значение.