仅将Exception类用作传输机制?

时间:2011-03-02 15:32:57

标签: .net exception

我不确定这是一个好主意,想要查询社区。使用Exception实例仅用于传输数据而不是丢弃它们怎么样?这是出于我需要在某种容器中传递异常信息以便记录或报告的情况。 Exception的数据结构恰好类似于我需要在程序中传递的信息,因此我正在考虑搭载它。

异常实例是一种方便的方法,用于打包有关不一定需要抛出的异常情况的信息。例如,作为响应对应用程序的Web服务调用的状态信息(例如XML)返回的异常数据。我不需要调用异常处理系统及其资源来执行此操作。

在所有级别的应用程序(在系统命名空间中)都可以理解Exception类,因此可以将其用作容器而无需在另一个程序集中引用或不创建自定义类。此外,异常可以视为普通对象,如方法的返回值,不需要抛出。

另外,我认为应用程序可以选择开始投掷它们。我猜想。

3 个答案:

答案 0 :(得分:2)

我将看到的主要问题是它可能导致代码消费者的混淆。

他们看到正在创建并传递Exception对象但未抛出。这会让他们的期望感到困惑。

你可以根据Exception创建自己的类并使用它,但对我来说它似乎有点“笨拙”。

答案 1 :(得分:0)

可能看起来有点令人困惑,但除此之外我没有看到任何问题。另一个解决方案可能是创建一个可供所有项目使用的共享框架dll,并在那里创建一个公共类。可能还会创建方法以将其强制转换为Exception

答案 2 :(得分:-1)

扔掉它们,捕获然后记录是什么问题? 这就是它们的工作方式。

如果以正常方式抛出并捕获异常,则会保留堆栈跟踪。在没有堆栈跟踪的情况下查找代码中的错误是一种巨大的痛苦。

您不应该使用通用Exception类,使用派生类或创建自己的类。我知道这需要一些时间,但在跟踪代码问题时它会收回成本。