向Exception类注入额外的消息

本文关键字:消息 注入 Exception | 更新日期: 2023-09-27 18:00:16

我知道这个问题没有多大意义,所以这里有一个例子。我有一个库,客户可以在其中构建sql查询,这可能需要很长时间。当它超时时,sql读取器抛出SqlException。可能有此库的使用者专门侦听SqlException。

在这里,我想把实际的命令文本传达给异常处理程序。SqlException是密封的,不提供公共构造函数,所以我可以实例化一个新的SqlException,也不能用自定义消息实例化派生类,比如"已执行Sql命令:从中选择*。。。"

目前,我正在抛出新的异常,并将原始SqlException作为内部异常,但这可能会使消费者错过此异常。

如有任何帮助,我们将不胜感激。请注意,我并不是在问这是否是传递异常信息的正确方式。我们本可以使用某种日志记录、传递消息或其他方式,但他们也有自己的问题,所以我正在探索这个选项。

编辑:使用ex的问题。数据是消费者必须知道如何检查它。为了提供更多信息,我的库被用于许多地方,包括遗留代码。我希望我的库的使用者做和现在一样的事情(没有代码更改),但当他们记录Exception.ToString()时,我的额外消息就会显示在那里。我的库和所有的使用者都是内部的,没有发货,所以记录Exception.ToString()很好,但它似乎没有公开数据。

向Exception类注入额外的消息

将您的信息添加到异常的Data属性中。MSDN页面上有一个您尝试做什么的示例。

http://msdn.microsoft.com/en-us/library/system.exception.data(v=vs.110).aspx