作爲一個開發人員我想我們以前接觸的java程序中,需要做到程序的健壯性,我們要進行各方面的檢測,其中參數檢測是一項很重要的操作,別人的輸入不能知道,換句話說用戶的操作你不可能操作和控制,我們唯一能做的就是接受用戶的所有的操作,其中對於我們不期望的情況進行特別的處理,今天我破門就來看一下Guava中的參數檢測,相較於平時的我們的判斷,Guava的參數檢測機制很是方便。廢話不說先來上代碼:
import com.google.common.base.Preconditions; import com.google.common.base.Strings; /** * Created by luyangli on 15-9-16. * <p/> * Guava 初碰參數檢測 */ public class Precondition1 { public static void main(String[] args) { preconditionTest("liluyang", 0); preconditionTest(null, 3); } public static void preconditionTest(String name, int age) { try { /** * 自定義拋出異常 */ if(Strings.isNullOrEmpty(name)){ throw new Exception("name is null"); } } catch (Exception e) { System.out.println(e.getMessage()); } try { /** * 失敗時拋出的異常類型:NullPointerException */ Preconditions.checkNotNull(name, "name is null"); } catch (NullPointerException e) { System.out.println(e.getMessage()); } try { /** * 失敗時拋出的異常類型: IllegalArgumentException */ Preconditions.checkArgument(age > 0, "age is < 0"); } catch (IllegalArgumentException e) { System.out.println(e.getMessage()); } } }
好了我們先分析一下這段代碼:
第一次調用的時候因爲name = "liluayng",age = 0;所以在第三個try{ }裏面會拋出異常,具體的情況就是參數檢測的結果啦。
第二次調用的時候因爲name = null,age = 3,所以在第一個,第二個的try{ } 裏面會有異常拋出,原因就不說了,都是我自己造的異常拋出的異常。
我們來看一下執行結果:
age is < 0 name is null name is null
看來我們的分析是OK的。。。。。
這就是我在項目中遇到的幾種最常見的參數拋出的異常,我相信這也是大家在實際的操作中遇到的幾種參數異常。
好了爲什麼我要進行異常的分類呢,就是因爲在實際的項目中我們的異常操作可能不同,比如監控或者日誌的添加,遇到參數的錯誤異常我們就進行分別的對待,例如:對於用戶的操作異常我們只是記錄日誌而不產生報警,但是對於系統的異常,出現一次舊進行報警,開發人員上線操作接觸故障等。
總的來說Guava的參數檢測很方便,也很簡單,具體的操作大家自己實踐一下就OK。