当你发现一个错误,你可以重新打包它,然后抛出另一个错误,在最基本的层面上,你可能只是增加更多的数据 - 但是,从你的建议,你也可以替换一般错误有一个自定义错误,虽然它不会克服你从组件中获得的响应的限制,但会让代码进一步提升调用堆栈的机会,以更恰当地作出响应。
在短短的最基本的方式将信息添加条款
所以 - 通过抛出一个新的异常与一些额外的文本,同时仍通过原有的例外:现在
catch (Exception ex)
{
throw new Exception("This is more about where the exception occurred", ex);
}
,如果要定义自己的自定义组件异常您将new Exception
更改为新的ComponentSpecificException
将必要的数据添加到构造函数中,但从未忘记设置内部异常。例外情况还有一个关键值对的数据收集,您可以在其中插入更多信息(通过创建例外,添加数据然后执行抛出)。
这些都是相当通用的 - 从那里开始工作,在那里你不一定能预见到你必须处理的所有异常,不要尝试 - 设置日志记录,以便知道何时有一个通用异常即一个触及最终捕获 - 然后随着时间的推移,在泛型之上添加异常特定的捕获以提供更适当的响应,或者至少将错误打包为较不常规的自定义异常。
不知道我是很好的解释 - 但观念是其难以预见每一个可能的错误,你想有发展以系统的方式您的应用程序,你发现新的异常的策略。
看起来像一个完善的解决方案。 – 2010-11-15 17:18:48
组件是否将所有异常重新打包为System.Exception?如果不是,你可以用正常的渔获量来处理它。如果是...祝你好运。 – asawyer 2010-11-15 17:21:38
只是不。你不知道例外有多严重。 – 2010-11-15 18:32:42