我正在創建一個實用程序類,它將用於我的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.";
}
}
}
從工具類簡單地重新拋出異常以便調用類可以捕獲它並完成需要做的事情是正確的嗎?
'GetPageIdFromGraph'在捕獲這兩個異常的時候沒有用,只是爲了重新拋出它們;其他例外情況在這裏沒有發現,所以它們繼續冒泡。這是你在問什麼? 'btnGetPageID_Click'中的代碼很好,如果你只想處理定義的兩個異常,並在其他所有的異常處理。 – Tejs 2013-03-25 21:43:26