iT邦幫忙

2021 iThome 鐵人賽

DAY 14
0
自我挑戰組

Java SE系列 第 14

Day14:鐵口直斷

還記得當初應徵人生第一份軟體工程師的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的語法規則就這麼簡單,剩下就是怎麼運用的問題了。回想當初看到的時候還覺得是甚麼很複雜的東西,人果然對未知的事物就會將它想像得很難,在自己腦袋放大它的難度。知識就是力量真是相當正確的一句話。


上一篇
Day13:窮理致知
下一篇
Day15:刀槍與弓箭
系列文
Java SE30

尚未有邦友留言

立即登入留言