使用Newtonsoft Json.NET 6.0.8,我有这样的代码:
public bool ValidateSchema<T>(T model, out IList<string> messages)
{
string stringedObject = Newtonsoft.Json.JsonConvert.SerializeObject(model,
new JsonSerializerSettings()
{
ContractResolver = new CamelCasePropertyNamesContractResolver(),
NullValueHandling = NullValueHandling.Include
});
messages = new List<string>();
JObject objectToValidate;
try
{
objectToValidate = JObject.Parse(stringedObject);
}
catch (Exception)
{
messages.Add("Unable to parse jsonObject.");
return false;
}
JsonSchema schema = JsonSchemaRepository.SchemaDictionary[typeof(T)];
return objectToValidate.IsValid(schema, out messages);
}
特别是尝试捕获块。从我的阅读来看,这种方法似乎只抛出我不想捕获的基本异常,因为它可以隐藏各种其他重要错误。
现在 nuget 包 Json.NET 非常专业,所以我不得不怀疑我是否正确地实现了我的解析方法,或者关于如何处理解析错误的任何其他想法。
也许日志并重新抛出?
蒂亚
您可以捕获基本 Exception,如果它是 Exception 的子类,则重新抛出它。
try
{
objectToValidate = JObject.Parse(stringedObject);
}
catch (Exception e)
{
if (e.GetType().IsSubclassOf(typeof(Exception)))
throw;
//Handle the case when e is the base Exception
messages.Add("Unable to parse jsonObject.");
return false;
}