1. 程式人生 > >從網站上讀取資料失敗

從網站上讀取資料失敗

有個自用的工具,從網站上讀取資料。

後來發現讀取的資料不完全。

除錯程式,發現都正常。粗略看了看源程式,也都是對的。又插入許多語句把中間變數寫到檔案中。發現也沒什麼大問題。折騰了很久,無果,就先不管了。

大半年過去了,斷斷續續地偶爾看看程式,也沒找到哪裡出錯了。

前兩天,又著手看看這個程式。添加了一堆除錯程式碼,把一些中間變數寫出到檔案。弄了2天,仍舊沒發現問題在哪。但是檢查了一箇中間變數有時該有資料卻不含資料,於是忽地想到了沒有為它提供資料,也就是讀取下來的網頁中不含有效資料,而且根據以前debug方式總是都對,應該是批量讀取網頁時會不確定地某些網頁讀取失敗。於是添加了程式碼,把某個網頁的讀取結果寫入檔案,然後在正常情況下(不能用debug方式單步去看)批量地讀網頁,果然那個網頁是一個“拒絕訪問”的網頁,不含正常資料。

反思一下為什麼這個問題這麼久才搞清楚。一是程式的程式碼流程複雜,啟動了新的執行緒去讀網頁,用了若干個類,分別處理不同的職責,所以完全檢查程式的流程正確相當費時,就一直懷疑程式流程中哪兒有問題,沒重點考慮外部原因。二是該網站以前返回資料還是挺快速可靠的,大概是最近才加入了拒絕異常訪問的功能。

總之,重構、保持可維護性很重要。