• 沒有找到結果。

資料蒐集異常處理設計與實作

第三章 系統設計與架構

3.6 資料蒐集異常處理機制設計與實作

3.6.2 資料蒐集異常處理設計與實作

341 Application limit reached 506 Duplicate Post

1609005 Error Posting Link Authentication Error Subcodes

458 App Not Installed 459 User Checkpointed 460 Password Changed 463 Expired

464 Unconfirmed User 467 Invalid access token

3.6.2 資料蒐集異常處理設計與實作

在處理「空值解析錯誤」方面,我們使用 RestFB API 中「.optString(“欄 位”,”null”)」的資料置換功能,此功能主要功用是,當 JSON 解析過程中,若該

57

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

段 JSON 資料有找到指定標籤時則回傳該欄位資料,若不幸地 RestFB API 找不 到指定欄位標籤時,則.optString 會回傳後方的 null 值給系統,以避免空值解析 錯誤情形的發生。

因本系統使用 MySQL 資料庫,在將資料寫入資料庫時,需以相對應之資料 屬性為之。在處理「屬性錯誤」此類問題時,前述之 RestFB API 指令除了「optString」

代表回傳的資料型態是「String」,另有其它不同屬性之相對應指令供開發人員使 用如「optInt」、「optDouble」等,使用資料庫各欄位對應之正確之屬性格式以解 決此一錯誤情形發生。

此外,因 MySQL 內資料表欄位有限制最大長度的問題,因此,若 JSON 資 料解析後某欄位長度超過資料庫欄位長度時會發生無法寫入之錯誤。因此在實作 系統中,在寫入資料庫欄位前我們會先檢查該欄位是否超過資料庫欄位限制,若 超過資料庫欄位長度限制時則自動縮減該筆資料的長度以符合資料庫設計。

因本實作系統之專案管理使用 Facebook 所提供之身份認證服務,以此一服 務區隔各使用者之不同專案,另外,本系統亦使用此一授權碼向 Facebook 提出 資料蒐集請求。Facebook 此一身份認證會在登入時取得該使用者之授權碼,但 此一授權碼有效期限約 2 小時左右即會失效。為避免授權碼失效導致專案無法登 入,我們在使用者每次登入時取得新授權碼,並進一步將授權碼進行轉換以延長 其使用時效為 2 個月。其授權碼時效延長方法如下圖 3-19。

58

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

圖3- 20 授權碼延長時效機制 引用來源:

https://developers.facebook.com/docs/facebook-login/access-tokens

除前面談到之規則化常見問題之外,通常系統開發初期無法將所有異常情形 做好完整考量,因此在「例外處理機制」方面,我們以 Java Exception 的方法,

在遇到其它非前述問題時,因有些問題為短時間異常情形,所以我們先以 Retry 方式進行處理,若該問題能快速排除恢復正常運作,則系統繼續運作。若該問題 無法排除則將此問題寫入異常紀錄中供開發人員研究其解決方法。如下圖 3-20

59

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

網路異常、授權碼瞬間異常等。

網路或授權異常 等待十分鐘

繼續蒐集工作 寫入異常紀錄

成功 失敗 失敗

三次 資料蒐集

圖3- 21 異常問題處理機制

60

為 2015-05-01~2015-05-31;主題以 2014 年度台灣最重要的社會事件:太陽花學 運作為主題;在此設定兩個太陽花學運熱門粉絲頁為種子粉絲頁:黑色島國青年 陣線及反黑箱服貿協議;並且蒐集這兩個粉絲頁於 2014-03-11 ~ 2014-04-17 太陽 花學運期間之動態消息資料;另外建立三個專案分別將貼文分享之門檻值設定為 1;2 及 3,即此段期間如果某粉絲頁發表之貼文被種子粉絲頁群中任一種子粉絲 頁分享即算 1 次,若累計達 1 次;2 次或 3 次以上,則將該粉絲頁也加入種子粉

61