1

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

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

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

3 回答 3

1

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

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

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

工作得很好。

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

于 2013-10-11T22:23:38.573 回答
0
var passedException = new Exception(123456,"Bad thing that happened");
throw passedException;
于 2013-10-11T22:23:18.983 回答
0

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

var passedException = new Exception(123456,"Bad thing that happened");
throw passedException;
于 2013-10-11T22:23:38.357 回答