如何寫出健壯的JAVA程式的一些心得。

2021-08-03 19:00:24 字數 1224 閱讀 3166

在我們的程式中,儘管我們的程式流程可能都是正確的,但仍然可能受一些外界因素的影響而出現意外導致程式未按預期流程執行。下面我就談談工作中遇到的一些意外:

1.在web程式中,引數由前台傳遞給伺服器,雖然雙方已經明確規定了傳遞的引數個數和型別,但如果前台的引數生成依賴於其他的**,那麼如果其他**出現問題導致引數無法正確生成並傳遞,那麼伺服器端如果不進行引數檢測,就可能出現異常。雖然錯誤的原因不在伺服器端,但如果在伺服器端做下引數驗證,那麼就可以有效的避免程式被意外打斷。

總結:不能把自己程式的健壯性建立在別人**正確的基礎上,這種依賴如果成了習慣,會麻痺自己的警覺性。要做到即使是別人錯了,我們的程式依然能正常執行。

2.對於有字串切割的地方或者取陣列的地方,要養成檢測null和長度的習慣,避免空指標和越界異常。

比如下面的**:string s = a.split(",")[1];

如果執行這段程式前未檢測a是否為null,那麼當a為null的時候就會出空指標異常,如果沒有判斷切割後的陣列長度,當陣列長度為1的時候就會出越界異常,很可能我們會認為程式裡的資料不會有問題,但有時會有些意外,比如,如果上述a 的值**於資料庫,而資料庫的資料可能因為某些手動操作導致了資料不完整,那麼出來的結果很可能就不是我們所預期的,那麼程式就在這裡出現了bug。

3.習慣性的檢視一些方法可能丟擲的異常,並進行捕獲。比如我們在讀取資源檔案的時候,可能因為某些原因資源檔案被刪掉了,或者資源檔案格式不正確,那麼就可能出現問題,導致程式在沒有獲得正確配置的情況下繼續往後執行,然後就出現了非預期的結果。

4.當程式功能完全實現後,習慣行的一行行**審查,對所有有可能丟擲的異常的地方進行處理,不要想當然的認為不會出現異常。最保險的辦法是在一些可能出異常而又不需要詳細處理的地方直接套一層catch exception,以保萬無一失。

5.對於程式有分支的地方,我們可能需要處理的可能只是某乙個分支,但是不要忘了分析下我們不需要處理的分支會不會對程式造成意外的干擾。比如銀行的轉賬操作,我們需要進行轉賬操作,驗證了各種轉賬條件都符合可以操作了,就執行轉賬,程式也能正確轉賬,但如果我們不思考假如轉失敗了怎麼處理,那麼很可能留下嚴重的bug。

6.對於一些過期的資料要考慮是否有必要進行清理,我曾經寫過乙個小快取系統,用的hashmap方式快取資料,程式執行1-2天沒問題,可是時間執行久了,就發現伺服器記憶體就耗盡了,後來發現就是因為hashmap裡的過期資料未正確清理,導致不斷的朝裡面存資料卻沒有銷毀,最終記憶體占用越來越大,所以當程式短時間執行沒問題而隨著時間延長占用記憶體也跟著增大的時候就要考慮是不是這個原因了。

如何寫出健壯可靠的shell指令碼

1 指令碼失敗時即退出 set e 例子 bin bash set e lp 這裡執行會出錯 date root dg1 opt sh t1.sh t1.sh line 3 lp command not found 可以在指令碼的開頭設定如下 set e root dg1 opt vim t1.sh...

如何寫出簡單的程式

簡單的程式,要求其結構簡單,目的明確,易閱讀和理解。簡單,總是有助於程式的正確性。現在我們來 一下如何將程式寫得簡單。首先,先說命名的問題,包括目錄結構名,檔名,類名,變數名等。命名應使用統一的命名規則和常識。統一的命名是程式設計師之間交流的common sence,不同的命名會增加程式閱讀的難度 ...

如何寫出最快的迴圈

作者 laruence 你知道怎麼寫出最快的迴圈麼?剛剛在曉東郭的 blog 看到乙個有趣的問題 php 中 i 和 i 的區別 1.方式一 2.3.begin time 4.i 0 5.while i 10000 6.12.end time 13.14.時間 16s 15.16.方式二 17.18...