代码应该抛出一个异常,但它没有'
本文关键字:异常 一个 代码 | 更新日期: 2023-09-27 18:11:32
下面的代码将图片发布到Facebook页面。然而,当它失败时(无论出于什么原因),它不会抛出任何异常,因此我无法找到失败的根本原因(我只提供了一条通用消息("Failed to post"))。如何修改下面的代码来显示实际的错误?
这是使用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);
}
});
如果显示"Failed to post",那么你就知道任务失败了。所以你可以找出Task.Exception
属性的例外。注意,这将给您一个AggregateException
,因为有可能有多个事情出错。(这在您的情况下可能不可能,但对于一般任务来说是可能的。)
如果您可以使用c# 5,那么您可以使用await
,这使得所有这些都更容易-当任务出错时,异常最终会在await
表达式处抛出。
如果你不能使用c# 5,你可能想要使用ContinueWith
的重载,它指定了任务延续选项:你可以为成功的情况附加一个延续,为失败的情况附加一个延续。您不必这样做,但如果您的故障处理总是相同的,则可以使事情变得更简单。