2013-10-11 153 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' –