我知道这个问题没有多大意义,所以这里有一个例子。 我有一个库,客户可以构建可能需要很长时间的SQL查询。 当它超时时,sql reader抛出SqlException。 该库的消费者可能专门听取SqlException。
在这里,我想传达实际的命令文本回到异常处理程序的内容。 SqlException是密封的,不提供公共构造函数,所以我可以实例化一个新的SqlException,也不能用自定义消息实例化派生类 “ 执行Sql命令:从...中选择* “
现在,我将新的Exception与原始SqlException作为内部异常抛出,但它可能会让消费者错过这个异常。
任何帮助将不胜感激。 请注意,我不是在问这是否是传递异常信息的正确方法。我们本来可以使用某种日志记录,传回消息或者其他人,但是他们遇到了一些问题,所以我正在探索这个选项。
编辑:使用ex.Data的问题是消费者必须知道检查它。为了提供更多信息,我的库在许多地方使用,包括遗留代码。我希望我的库的消费者做同样的事情(没有代码更改)但是当他们记录Exception.ToString()时,我的附加消息显示在那里。我的库和所有消费者都是内部的,而不是发货,所以记录Exception.ToString()很好,但它似乎没有暴露数据。
答案 0 :(得分:1)
将您的信息添加到异常的Data属性中。 MSDN页面提供了您尝试执行的操作的示例。
http://msdn.microsoft.com/en-us/library/system.exception.data(v=vs.110).aspx