Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在Catch块中依赖异常消息是一种好的做法吗? 试试看 { 反序列化对象(json,新的JsonSerializerSettings { 最大深度=2 }); } 捕获(JsonReaderException ex) { if(例如Message.StartsWith(“读卡器的最大深度”,StringComparison.OrdinalIgnoreCase)) { //在这里跟踪消息 } 其他的 { 投掷; } }_C#_Exception_C# 4.0_Json.net_Try Catch - Fatal编程技术网

C# 在Catch块中依赖异常消息是一种好的做法吗? 试试看 { 反序列化对象(json,新的JsonSerializerSettings { 最大深度=2 }); } 捕获(JsonReaderException ex) { if(例如Message.StartsWith(“读卡器的最大深度”,StringComparison.OrdinalIgnoreCase)) { //在这里跟踪消息 } 其他的 { 投掷; } }

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?)@当一个叫杰森的人是文盲时,他就开始学习一般来说,这

我只想捕获由于MaxDepth溢出引起的异常。我用ex.Message来做这个。获取对库的内部消息字符串的依赖性是一种好的做法吗?有没有更好的方法来实现同样的目标?

您的风险在于库作者会更改消息并破坏您的代码。是否冒险是你自己的决定。你可以在(例如Message.StartsWith(…)时执行
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;
            }
        }