2013-10-11 246 views
1

我遇到了通过另一个代码库处理异常的问题。有谁知道是否可以将异常存储为变量,以便您可以调用它?将变量存储为变量

我对C#有点新,但我的印象是你可以在var中存储任何东西。我需要通过它,因为我在异步线程中抛出异常,我需要将它移回处理异常的主线程。我无法传递它,因为异步类只能是Task或Void。任何想法我怎么能得到这样的工作?

var passedException = Exception(123456,"Bad thing that happened"); 
throw new passedException; 
+0

如果您正在使用'Task',那么当您尝试获取[[AggregateException]](http://msdn.microsoft.com/en-us/library/system.aggregateexception.aspx)时将引发结果或等待任务完成。 – Romoku

回答

0
var passedException = new Exception(123456,"Bad thing that happened"); 
throw passedException; 
0

new关键字就移动到要创建的Exception对象的第一行:

var passedException = new Exception(123456,"Bad thing that happened"); 
throw passedException; 
1

你应该更仔细到什么var数据类型实际上是,它没有任何与您的代码无法正常工作。

下面是它的一些问题;您尝试调用Exception构造函数而不使用new关键字。在下一行中,如果仅适用于类型,则尝试在实例上使用new关键字。

Exception e = new Exception("My custom message!"); 
throw e; 

工作得很好。

如果你想使用var那么你可以做var e,但它在这里没有价值,imo只是滥用了这个功能。 var只是语法糖,编译器只会允许它,如果类型可以从语句的右侧推断出来。

+0

用于使用特定类型而不是'var' –