我正在创建一个实用程序类,它将在我的Facebook应用程序中用于常用的任务,例如从URL检索Facebook页面ID。我不确定下面的代码是否是抛出和捕获异常的正确方法。有人可以建议,谢谢。
实用程序类:
public static class FacebookUtilities
{
public static string GetPageIDFromGraph(string pageUri, string accessToken)
{
try
{
FacebookClient client = new FacebookClient(accessToken);
dynamic result = client.Get(GetPageIDFromUri(pageUri), new { fields = "id" });
return result.ToString();
}
catch (FacebookOAuthException)
{
throw;
}
catch (FacebookApiException)
{
throw;
}
}
public static string GetPageIDFromUri(string pageUri)
{
if (pageUri.Contains('/'))
pageUri = pageUri.Substring(pageUri.LastIndexOf('/') + 1);
if (pageUri.Contains('?'))
return pageUri.Substring(0, pageUri.IndexOf('?'));
else
return pageUri;
}
}
程序类,只是测试: - 注意“输入”和“输出”只是文本框。
private void btnGetPageID_Click(object sender, EventArgs e)
{
try
{
output.Text = FacebookUtilities.GetPageIDFromGraph(input.Text, "Some Access Token Goes Here");
}
catch (FacebookOAuthException ex)
{
if (ex.ErrorCode == 803)
{
output.Text = "This page does not exist";
}
}
catch (FacebookApiException ex)
{
if (ex.ErrorCode == 100)
{
output.Text = "The request was not supported. The most likely cause for this is supplying an empty page ID.";
}
}
}
从实用程序类中重新抛出异常是否正确,以便调用类可以捕获它并执行需要执行的操作?
答案 0 :(得分:2)
似乎你对捕获的异常没有任何作用 - 所以不要抓住它们。有很多关于异常处理的讨论,但一般来说,当你与它们有关时,你应该捕获异常,或者至少最后使用清理资源。
答案 1 :(得分:1)
由于您没有以任何方式处理异常,因此您的代码可以是:
public static string GetPageIDFromGraph(string pageUri, string accessToken)
{
FacebookClient client = new FacebookClient(accessToken);
dynamic result = client.Get(GetPageIDFromUri(pageUri), new { fields = "id" });
return result.ToString();
}
只有当你能够有意义地处理它们时才应该捕获异常,并且它在你的GetPageIDFromGraph
方法中看起来不像你,所以你应该只传播它们。