0

RSS フィードからアイテムを取得しようとしていますが、「リモート サーバーに接続できません」という TargetInvocationException が発生することがあります。このエラーをキャッチするために try catch ブロックを使用しようとしていますが、変数フィードを他のコード全体で使用する必要があり、このように表示されないため、管理していません。助言がありますか?

public static async Task<List<FeedItem>> getFeedsAsync(string url)
    {
       //The web object that will retrieve our feeds..
       SyndicationClient client = new SyndicationClient();

       //The URL of our feeds..
       Uri feedUri = new Uri(url);

       //Retrieve async the feeds..
       try
       {
           var feed = await client.RetrieveFeedAsync(feedUri);
       }
       catch (TargetInvocationException e)
       {

       }

       //The list of our feeds..
       List<FeedItem> feedData = new List<FeedItem>();

       //Fill up the list with each feed content..
       foreach (SyndicationItem item in feed.Items)
       {
             FeedItem feedItem = new FeedItem();
             feedItem.Content = item.Summary.Text;
             feedItem.Link = item.Links[0].Uri;
             feedItem.PubDate = item.PublishedDate.DateTime;
             feedItem.Title = item.Title.Text;

             try
             {
                 feedItem.Author = item.Authors[0].Name;
             }
             catch(ArgumentException)
             { }

             feedData.Add(feedItem);
         }

         return feedData;
    }

 }
}
4

2 に答える 2

1

この種のエラーは防止できません。これは外因性の例外です。

この種のエラーに対処する方法は 1 つしかありません。アプリケーションは、エラーを予期し、適切な方法で反応するように設計する必要があります (エラー ダイアログや通知を表示するなど)。

catch特に、空のブロックでそれらを無視しようとしないでください。

于 2014-02-02T12:27:59.853 に答える
0
IAsyncOperationWithProgress<SyndicationFeed, RetrievalProgress> feed;

//Retrieve async the feeds..
try
{
   feed = await client.RetrieveFeedAsync(feedUri);
}
catch (TargetInvocationException e)
{

}
于 2014-02-02T11:50:02.293 に答える