以下代码将图片发布到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);
}
});
答案 0 :(得分:2)
如果它正在写“发布失败”,那么您就知道该任务已经出现故障。因此,您可以使用Task.Exception
属性找出异常。请注意,这将为您提供AggregateException
,因为可能出现了多个问题。 (在你的情况下,这可能是不可能的,但通常可以完成任务。)
如果您可以使用C#5,那么您可以使用await
使这一切变得更加容易 - 当任务出现故障时,异常最终会被await
表达式抛出。
如果您不能使用C#5,可能想要使用指定任务延续选项的ContinueWith
重载:您可以为成功案例附加一个延续,并且仅针对失败案例的一个延续。您没有必要,但如果您的故障处理始终相同,它可以使事情变得更简单。