2016-02-03 69 views
-2

我正在分析靜態分析器的結果。在c#中如果涉及方法調用,`as`運算符會拋出異常

在c#語言中可以as運算符拋出異常,如果涉及方法調用?即as是否阻止了所有異常?

string string_name = some_object.Deserialize(openstream) as string; 
+0

downvoters請在註釋解釋 – denfromufa

+4

你爲什麼這麼問?此代碼是否會拋出異常?你爲什麼認爲方法調用是相關的? – CodeCaster

+0

我在分析靜態分析器的結果 – denfromufa

回答

2

這不是as運算符,而是拋出異常的方法。

嘗試:

var valueFromMethod = some_object.Deserialize(openstream); 
string string_name = valueFromMethod as string; 

您將獲得第一行除外。如果投射失敗,則返回null。它不會拋出異常。

4

不,最壞的情況下as將返回null如果無法進行轉換。

一兩件事情很可能

  1. 你的方法調用Deserialize拋出異常
  2. 東西嘗試使用的string_name價值,並得到一個NullReferenceException