0

URL から Facebook ページ ID を取得するなど、一般的に行われるタスクのために Facebook アプリケーションで使用されるユーティリティ クラスを作成しています。以下のコードが例外をスローおよびキャッチする正しい方法であるかどうかはわかりません。誰かアドバイスしてくれませんか、ありがとう。

ユーティリティ クラス:

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

キャッチされた例外に対して何もしていないように見えるので、キャッチしないでください。例外処理については多くの議論がありますが、一般的には、何か関係がある場合は例外をキャッチするか、少なくとも最後にリソースをクリーンアップするために使用する必要があります。

于 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 に答える