Json.NET DeserializeObject 允许构造函数异常冒泡
Json.NET DeserializeObject allow constructor exception to bubble up
我正在使用 JsonConvert.DeserializeObject<T>(string value)
方法从 string
.
中反序列化 T
类型的对象
在自定义 class(我试图反序列化)中,我对提供给构造函数的参数执行检查并可以抛出 ArgumentNullException
。但是,此异常不会通过反序列化器冒泡并到达原始调用者,因此该异常在构造函数中保持未处理状态。
这是我在助手中使用的通用方法 class:
public static T FromJsonString<T>(string json)
{
try
{
return JsonConvert.DeserializeObject<T>(json);
}
catch(ArgumentNullException)
{
// Would like to handle exception here, but never reached
}
}
我的 class 构造函数示例:
[JsonConstructor]
public Profile(string name, ...)
{
if (string.IsNullOrWhiteSpace(name)) { throw new ArgumentNullException("name"); }
// ...
}
我曾尝试在调用 DeserializeObject<T>()
时使用 JsonSerializerSettings
,例如 Error
属性,但这没有任何区别。
如何使异常冒泡而不是留在我的 class 的构造函数中?
问题是由 Visual Studio 中断异常引起的,因为它被归类为 "user-unhandled"。在 Debug > Windows > Exception Settings 中,您可以更改哪些异常中断,哪些不中断。
我正在使用 JsonConvert.DeserializeObject<T>(string value)
方法从 string
.
T
类型的对象
在自定义 class(我试图反序列化)中,我对提供给构造函数的参数执行检查并可以抛出 ArgumentNullException
。但是,此异常不会通过反序列化器冒泡并到达原始调用者,因此该异常在构造函数中保持未处理状态。
这是我在助手中使用的通用方法 class:
public static T FromJsonString<T>(string json)
{
try
{
return JsonConvert.DeserializeObject<T>(json);
}
catch(ArgumentNullException)
{
// Would like to handle exception here, but never reached
}
}
我的 class 构造函数示例:
[JsonConstructor]
public Profile(string name, ...)
{
if (string.IsNullOrWhiteSpace(name)) { throw new ArgumentNullException("name"); }
// ...
}
我曾尝试在调用 DeserializeObject<T>()
时使用 JsonSerializerSettings
,例如 Error
属性,但这没有任何区别。
如何使异常冒泡而不是留在我的 class 的构造函数中?
问题是由 Visual Studio 中断异常引起的,因为它被归类为 "user-unhandled"。在 Debug > Windows > Exception Settings 中,您可以更改哪些异常中断,哪些不中断。