C# 在Catch块中依赖异常消息是一种好的做法吗? 试试看 { 反序列化对象(json,新的JsonSerializerSettings { 最大深度=2 }); } 捕获(JsonReaderException ex) { if(例如Message.StartsWith(“读卡器的最大深度”,StringComparison.OrdinalIgnoreCase)) { //在这里跟踪消息 } 其他的 { 投掷; } }
我只想捕获由于MaxDepth溢出引起的异常。我用ex.Message来做这个。获取对库的内部消息字符串的依赖性是一种好的做法吗?有没有更好的方法来实现同样的目标?您的风险在于库作者会更改消息并破坏您的代码。是否冒险是你自己的决定。你可以在(例如Message.StartsWith(…)时执行C# 在Catch块中依赖异常消息是一种好的做法吗? 试试看 { 反序列化对象(json,新的JsonSerializerSettings { 最大深度=2 }); } 捕获(JsonReaderException ex) { if(例如Message.StartsWith(“读卡器的最大深度”,StringComparison.OrdinalIgnoreCase)) { //在这里跟踪消息 } 其他的 { 投掷; } },c#,exception,c#-4.0,json.net,try-catch,C#,Exception,C# 4.0,Json.net,Try Catch,我只想捕获由于MaxDepth溢出引起的异常。我用ex.Message来做这个。获取对库的内部消息字符串的依赖性是一种好的做法吗?有没有更好的方法来实现同样的目标?您的风险在于库作者会更改消息并破坏您的代码。是否冒险是你自己的决定。你可以在(例如Message.StartsWith(…)时执行catch(JasonReaderException ex),这样你就不必重复任何异常了。@juharr什么是JasonReaderException?)@当一个叫杰森的人是文盲时,他就开始学习一般来说,这
catch(JasonReaderException ex)
,这样你就不必重复任何异常了。@juharr什么是JasonReaderException
?)@当一个叫杰森的人是文盲时,他就开始学习一般来说,这不是一个好主意,因为异常消息应该本地化。请参见和:不要本地化异常消息。
try
{
JsonConvert.DeserializeObject<List<IList<IList<string>>>>(json, new JsonSerializerSettings
{
MaxDepth = 2
});
}
catch (JsonReaderException ex)
{
if (ex.Message.StartsWith("The reader's MaxDepth", StringComparison.OrdinalIgnoreCase))
{
// Trace a message here
}
else
{
throw;
}
}