Краткий ответ: Нет.
Структура try-catch
довольно дорогая с точки зрения ресурсов. С точки зрения дизайна, это тоже неправильно;исключение должно быть именно таким: исключение - что-то необычное, возможно, ошибка. То, как вы используете его здесь, это просто проверить, какой из двух допустимых форматов использовать.
По сути, здесь вы используете обработку исключений в качестве вычислительно дорогой операции if-else
.
Лучшим решением может быть попытка сначала извлечь содержимое jObject["caseData"]
и явно проверить его формат, чтобы узнать, какую опцию использовать. Как только вы это узнаете, вы можете использовать обычную структуру if-else
, чтобы решить, как ее десериализовать.
Что-то вроде:
var dateText = jObject["caseData"].ToString();
var matchingFormat = dateText.Contains("/") ? "d/M/yyyy" : "d-M-yyyy";
caseData.AddRange(
JsonConvert.DeserializeObject<List<CaseInfo>>(
jObject["caseData"].ToString(),
new JsonSerializerSettings { DateFormatString = matchingFormat }));
Примечание. Предполагается, что вы достаточно уверены, что можете верить, что ввод будет в одном из двух форматов. Возможно, вы захотите добавить дополнительную проверку, особенно если конечным пользователям можно свободно манипулировать с полем даты.