Jacob 可以用來做很多事,我這裡主要用到了通過 office 轉 pdf 的功能。
在使用過程中,偶爾會出現(1%的機率)程序異常,出現彈框等問題導緻程式假死。
為了解決類似問題,在使用過程中,可以從以下細節進行優化。
1. 隻讀模式
使用 office 時,如果檔案被占用,在打開始會彈框進行提示:
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsICN4ETMfdHLkVGepZ2XtxSZ6l2clJ3LcBnYldHL0FWby9mZvwVPrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdsAjMfd3bkFGazxCMx8VesATMfhHLlN3XnxCMz8FdsYkRGZkRG9lcvx2bjxSa2EWNhJTW1AlUxEFeVRUUfRHelRHL2EzXlpXazxyayFWbyVGdhd3LcV2Zh1Wa9M3clN2byBXLzN3btg3Pn5GcugzN4UzN5YWN1UmZyYmZyYzX5IDOzQTM5EzLchDMyIDMy8CXn9Gbi9CXzV2Zh1WavwVbvNmLvR3YxUjLyM3Lc9CX6MHc0RHaiojIsJye.png)
出現該彈窗後會導緻程式卡住不動。
如果改為隻讀模式,就不存在這個問題,代碼如下:
注意上面第二行第一個參數,設定為
true
就能解決。
2. 逾時重試
如果在轉 PDF 過程中,出現下面的錯誤:
就會導緻轉換失敗,而且不點選【關閉程式】的情況下該程序會卡住。
增加逾時重試機制後,雖然該錯誤視窗還在,但是轉PDF可以成功繼續。
3. 定時清理錯誤程序
上面錯誤中,對應的錯誤程序為
WerFault.exe
,可以通過在定時任務中執行下面代碼關閉該視窗:
Runtime.getRuntime().exec("taskkill /F /IM WerFault.exe");
在出錯的的情況,假設是 word 轉 pdf,此時在程序清單中,還會一直有對應的
WINWORD.EXE
一直在運作,通過監控程序 PID 存在時長來判斷是否因為異常已經很久沒有關閉,通過代碼來關閉相應的程序。
通過下面代碼擷取程序清單:
taskkill /nh /FI "IMAGENAME eq XX.EXE"
代碼如下:
擷取 ID 後,記錄程序 ID 被搜尋到幾次:
當超過一定次數的時候關閉程序:
批量關閉程序: