将异常存储为变量

本文关键字:变量 存储 异常 | 更新日期: 2023-09-27 18:34:55

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

我对 C# 有点陌生,但我的印象是您可以在 var 中存储任何内容。我需要传递它,因为我在异步线程中抛出异常,我需要将其移回处理异常的主线程。我无法传递它,因为异步类只能是任务或 Void。任何想法如何让这样的东西工作?

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

将异常存储为变量

您应该更仔细地研究var数据类型的实际含义,它与您的代码不起作用无关。

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

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

工作得很好。

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

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

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

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