還記得當初應徵人生第一份軟體工程師的Java筆試,那時候沒有特別準備,但前面的一些類別物件概念都還能夠應付,但突然後面出現了一整面的assert,頓時愣住!知道Java有這個語法,但平常自己寫作業或寫WebApp時根本沒用過這東西~結果只好一整面的題目都亂猜(好險是選擇題)
後來開始工作後,翻了一下公司現有系統的程式,才發現assert其實是很基本的東西,尤其在寫一些test的時候滿常用的。
assertion常用於開發的時候,目的是確認在進行後續流程前,必要條件是否已經滿足了:
class Father {
static int division(int numerator, int denominator) {
return numerator / denominator;
}
public static void main(String[] args) {
int numerator = 123;
int denominator = 0;
assert denominator != 0 : "denominator should not be zero.";
division(numerator, denominator);
}
}
若 denominator != 0 這個條件為true時,程式不會發生任何事情,就是順順的過去,接續執行下面的程式;若為false時,將會發生AssertionError,並顯示出 : “denominator should not be zero.” 的自定義訊息。
冒號 ":" 後面的訊息可加可不加,也可以放上物件,若是物件的話會執行該物件的toString()方法來顯示。
不過也不是直接在IDE就會看到AssertionError,這需要在執行Run時設定VM的argument "-ea",如果是用cmd執行的話就是要在-java指令後面加上"-ea",才會有斷言的效果。
恩...結束了,其實assert的語法規則就這麼簡單,剩下就是怎麼運用的問題了。回想當初看到的時候還覺得是甚麼很複雜的東西,人果然對未知的事物就會將它想像得很難,在自己腦袋放大它的難度。知識就是力量真是相當正確的一句話。