c# – 抛出异常但保持堆栈跟踪

c# – 抛出异常但保持堆栈跟踪,第1张

概述我想抛出一个异常,但也有自定义消息和persist stacktrace.我经历了各种各样的线索. catch (Exception ex){throw; // Message is read only but stacktrace persistthrow ex; // Message is readonly and strack trace also blows .. worst!th 我想抛出一个异常,但也有自定义消息和persist stacktrace.我经历了各种各样的线索.
catch (Exception ex){throw; // Message is read only but stacktrace persistthrow ex; // Message is Readonly and strack trace also blows .. worst!throw new CustomException("My exception");// Message can be overrIDden but stacktrace lostthrow new CustomException("My message",ex);// same as above. However if this constructor in exception class calls same constructor of base class then .. see below}

当使用最后一个appraoch时(使用自定义异常构造函数调用基类构造函数),死亡屏幕上的输出类似于:

**The Remote Server returned an error: (401) Unauthorized.**[WebException: The Remote Server returned an error: (401) Unauthorized.]original stack trace [NewException: newMessage]New  Stack Trace

好东西是屏幕上的一切都在那里.但是,最重要的是我希望我的例外显示“新消息”而不是原始消息.

因此调和我的问题:如何在死亡屏幕上显示原始堆栈跟踪但是有自定义错误消息?

解决方法
throw new CustomException("My message",ex);// same as above (... stacktrace lost)

你在评论中得出的结论在最后一篇文章中是错误的.堆栈跟踪保留在内部异常中.标准报告(包括Exception.ToString())将报告完整的堆栈跟踪.当你获得正确的构造函数时,这就是你所看到的. (始终打电话给正确的基地!).

但我不认识[WebException].在WCF中你需要

<serviceDeBUG includeExceptionDetailinFaults="true"/>

我猜您的Web环境具有类似的功能,可以抑制客户端的错误信息.

总结

以上是内存溢出为你收集整理的c# – 抛出异常但保持堆栈跟踪全部内容,希望文章能够帮你解决c# – 抛出异常但保持堆栈跟踪所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1261921.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存