无法捕获JsonReaderException

时间:2015-12-11 23:48:28

标签: c# json exception

我在已部署的系统上收到以下错误:

See the end of this message for details on invoking 
just-in-time (JIT) debugging instead of this dialog box.

************** Exception Text **************
Newtonsoft.Json.JsonReaderException: Unexpected character encountered while parsing value: S. Path '', line 0, position 0.
   at Newtonsoft.Json.JsonTextReader.ParseValue()
   at Newtonsoft.Json.JsonTextReader.ReadInternal()
   at Newtonsoft.Json.JsonTextReader.Read()
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.ReadForType(JsonReader reader, JsonContract contract, Boolean hasConverter)
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(JsonReader reader, Type objectType, Boolean checkAdditionalContent)
   at Newtonsoft.Json.JsonSerializer.DeserializeInternal(JsonReader reader, Type objectType)
   at Newtonsoft.Json.JsonConvert.DeserializeObject(String value, Type type, JsonSerializerSettings settings)
   at Newtonsoft.Json.JsonConvert.DeserializeObject[T](String value, JsonSerializerSettings settings)
   at JsonWrapper.DeserializeJson[T](String data, ITraceWriter tracer)

这是来自DLL的简化JsonWrapper.DerserializeJson代码:

public static T DeserializeJson<T>(string data, ITraceWriter tracer) {
    try {
        return JsonConvert.DeserializeObject<T>(data, new JsonSerializerSettings { TraceWriter = tracer });
    } catch (JsonReaderException jrex) {
        throw new CustomException("Unable to deserialize Json message.", jrex);
    }
}

我知道为什么会抛出异常,但是我无法弄清楚为什么它没有被try-catch块捕获。

此代码是我们的一个客户端正在使用的DLL。我希望这是一个只能在DLL中完成的修复。

对此的任何见解都会很棒!

1 个答案:

答案 0 :(得分:0)

我确实发现我没有在我的实现方法中捕获正确的CustomException;一旦修复,我再也无法得到JIT错误。

仍然没有弄清楚为什么JsonReaderException被显示为JIT错误而不是我的CustomException。