2014-10-28 185 views
1

我正在將Java獨立作業運行爲cronjob。我注意到在某些罕見的情況下,作業將失敗並出現運行時異常,如OutOfMemoryError。 cron的MAIL_TO處理程序看起來並不能完成任務的失敗,顯然Java應用程序無法執行任何操作,因爲由於內存錯誤而停止執行。作爲cronjob運行時如何處理Java運行時錯誤

什麼是最好的做法來處理這種錯誤,並具有cron警報?我能想到的最接近的是,每個Java作業都寫入一個「SUCCESS」日誌記錄,然後在cronjob中鏈接一個grep並返回一個錯誤代碼,以便cron的MAIL_TO能夠接受它。這顯然會使crontabs混亂,顯然需要更改代碼來編寫日誌條目。

回答

0

你爲什麼不使用try catch塊趕上了內存異常,並做必要的事情catch塊..ü可以創建失敗日誌記錄,並在日誌中添加作業當u到達catch塊

0

我認爲最好的是存儲成功完成標誌數據庫或日誌,然後根據計數我的意思是多少時間的cron應該在一天或一週的日誌運行或DB進行審查,看任何故障。

1

的JVM(當然,與它相關聯的過程),退出代碼1退出時未捕獲的異常使得其不處理,要麼主線程所有方式。

所以,一種選擇是讓所有檢查的異常在main()中被捕獲,並使用System.exit()退出除1之外的任何其他值(不要以0退出,因爲這是成功的「標準」),並且擁有cron腳本處理任何退出代碼(例如,使用$?變量)。

另外,不要忘記,堆棧跟蹤去爲默認標準錯誤。