0

下面的代码将图像发布到 Facebook 页面。但是,当它失败时(无论出于何种原因),它不会抛出任何异常,因此我无法找出失败的根本原因(只有我提供的一般消息(“无法发布”)。我将如何更改下面的代码显示实际错误?

这是使用 Facebook C# SDK

FacebookClient fbClient = new FacebookClient(accessToken);
fbClient.PostTaskAsync(path, post)
    .ContinueWith(task => 
    {
        if (!task.IsFaulted)
        {
            if (((IDictionary<string, object>)post).ContainsKey("scheduled_publish_time"))
            {
                DateTime dateTime = Utilities.ConvertUnixTimeStampToDateTime(Double.Parse((((dynamic)post).scheduled_publish_time)), true);
                OnFacebookPostSuccess("Successfully posted: (" +
                                dateTime + ") " + postText);
            }
            else
            {
                OnFacebookPostSuccess("Successfully posted: (" +
                                DateTime.Now + ") " + postText);
            }
        }
        else
        {
            OnFacebookPostFailed("Failed to post " + filename);
        }
    });
4

1 回答 1

2

如果它正在写“无法发布”,那么您就知道任务出现了错误。因此,您可以找出该Task.Exception属性的异常。请注意,这会给您一个AggregateException,因为可能有多个事情出错了。(在您的情况下这可能是不可能的,但通常对于任务来说是可能的。)

如果您可以改用 C# 5,那么您可以使用awaitwhich 使这一切变得更容易 - 当任务出错时,异常最终会在await表达式的点被抛出。

如果您不能使用 C# 5,您可能希望使用ContinueWith指定任务延续选项的重载:您可以为成功案例附加一个延续,为失败案例附加一个延续。您不必这样做,但如果您的故障处理始终相同,它可以使事情变得更简单。

于 2013-04-30T06:10:37.060 回答