0

我正在创建一个实用程序类,它将在我的 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.";
            }
        }
    }

简单地从实用程序类中重新抛出异常以便调用类可以捕获它并执行需要做的事情是否正确?

4

2 回答 2

2

似乎您对捕获的异常无能为力 - 所以不要捕获它们。有很多关于异常处理的讨论,但一般来说,当你与它们有关时,你应该捕获异常,或者至少使用 finally 来清理资源。

于 2013-03-25T21:43:13.397 回答
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,因此您应该传播它们。

于 2013-03-25T21:43:38.753 回答