【问题标题】:Storing an exception as a variable将异常存储为变量
【发布时间】:2013-10-20 02:59:38
【问题描述】:
我遇到了通过另一个代码库处理异常的问题。有谁知道是否可以将异常存储为变量以便调用它?
我对 C# 有点陌生,但我的印象是您可以在 var 中存储任何内容。我需要传递它,因为我在异步线程中抛出了一个异常,我需要将它移回处理异常的主线程。我无法通过它,因为异步类只能是 Task 或 Void。有什么想法可以让这样的事情发挥作用吗?
var passedException = Exception(123456,"Bad thing that happened");
throw new passedException;
【问题讨论】:
标签:
c#
variables
exception
asynchronous
var
【解决方案1】:
您应该更仔细地查看var 数据类型实际上是什么,它与您的代码无法正常工作无关。
这里有一些问题;您尝试在不使用 new 关键字的情况下调用 Exception 构造函数。在下一行中,当它仅适用于类型时,您尝试在实例上使用 new 关键字。
Exception e = new Exception("My custom message!");
throw e;
工作得很好。
如果你想使用var,那么你可以使用var e,但它在这里没有任何价值,imo 只是对该功能的滥用。 var 只是语法糖,只有在可以从语句右侧推断出类型时,编译器才会允许它。
【解决方案2】:
var passedException = new Exception(123456,"Bad thing that happened");
throw passedException;
【解决方案3】:
只需将new 关键字移动到您要创建Exception 对象的第一行:
var passedException = new Exception(123456,"Bad thing that happened");
throw passedException;