将异常存储为变量

时间:2013-10-11 22:20:44

标签: c# variables exception asynchronous var

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

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

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

3 个答案:

答案 0 :(得分:1)

您应该更仔细地查看var数据类型实际上是什么,它与您的代码无效有关。

以下是一些问题;您尝试在不使用Exception关键字的情况下调用new构造函数。在下一行,当它仅适用于类型时,您尝试在实例上使用new关键字。

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

工作正常。

如果您想使用var,那么您可以执行var e但它没有任何价值,而imo只是滥用该功能。 var只是语法糖,如果可以从语句的右侧推断出类型,编译器将只允许它。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

只需将new关键字移到您创建Exception对象的第一行:

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