2012-08-30 30 views
0

我想創建一個try catch,以便如果feed不存在或者由於某種原因無法創建,它將返回false或null,以便我可以測試變量並創建一個默認項目。實現嘗試,抓住聯合饋送(RSS)類型

Function GetFeed(url As String) As SyndicationFeed 

    Dim feed = New SyndicationFeed 

    Try 
     Dim reader = XmlReader.Create(url) 
     feed = SyndicationFeed.Load(reader) 
    Catch ex As Exception 
     feed = Nothing 
    End Try 

    Return feed 

End Function 

它說我不能將類型「SyndicationFeed」設置爲布爾值。

該錯誤是與此代碼:

Dim feedUrl = "http://rss.news.yahoo.com/rss/entertainment" 
    Dim feed As SyndicationFeed = GetFeed(feedUrl) 

    If feed = Nothing Then 

    End If 

它說, 「運算符 '=' 沒有爲類型SyndicationFeed定義。」

+0

你確定你正在編譯這個確切的代碼嗎?因爲它接縫良好.... – nemesv

+0

請你可以發佈代碼打破?我看不到您發佈的示例有任何問題。我覺得特別的是,顯示給GetFeed的電話 - 我懷疑你正在做一些類似於'Boolean result = GetFeed(someUrl)'的操作,這將不起作用... –

+0

我最初沒有發佈錯誤的代碼,因爲我認爲這是錯誤的做法。我現在發佈了它。 – user1477388

回答

2

在VB.Net你需要使用is operatorcompare objects

因此改變你的條件:

If feed Is Nothing Then 

End If 
+0

感謝您的解決方案。這是做這件事的最好方法嗎?我覺得可能有更好的方法。 – user1477388

+1

@ user1477388更好的方法來做什麼?檢查「Nothing」是唯一的方法。捕獲異常並返回'Nothing'沒有問題,但您應該考慮在某處記錄什麼是異常情況。 .Net中有許多函數,如果內部不滿足某些條件,它將返回Nothing。 – nemesv

+1

@ user1477388如果您將其重命名爲TryGetFeed,那麼您可以更清楚地瞭解您的方法,這意味着它可能不會返回Feed。 – nemesv

1

我不是VB的專家,但你需要使用「是」,而不是「= 」。換句話說,將「如果feed = Nothing Then」替換爲「If feed Is Nothing Then」。

+0

謝謝你,阿克頓。 – user1477388