iT邦幫忙

2022 iThome 鐵人賽

DAY 24
0
Software Development

Java入門的30張門票系列 第 24

[Day24] 斷言 assertions

  • 分享至 

  • xImage
  •  

斷言是用來維護程式讓它可以更堅固,通常會用來檢查一些關鍵的值,避免這些值出現錯誤讓程式無法繼續執行。

它的語法有兩種:
如果<boolean_expression>為true,程式就會繼續執行,但當boolean_expression為false時,就會丟出AssertionError,程式會中斷。

assert <boolean_expression>

當boolean_expression為false時,就執行:後的運算式,最常用的是字串,來說明發生錯誤的原因。

assert <boolean_expression>: <detail_expression>
// 範例
assert obj != null : "物件不能為null"

其實乍看之下跟if有點像,都是true就執行一種,false執行另外的程式,但兩者的作用有著本質的區別:assert關鍵字是為了測試,用來除錯程式時用的,如果用assert來控制程式流程,在測試除錯結束後去掉assert關鍵字就意味著修改了程式的正常流程,所以還是要適當使用這個Assertion機制,它應該在程式開發的過程中就已經完成,不管使用者有沒有啟動這個功能,都不可以影響到程式的正常執行,必須遵守兩個限制:

  • 不要在public方法中用它來檢查參數的正確性
  • 不要用它來處理一些程式的必要流程

會使用到Assertion的四種情況:

  1. 流程的不變性
  2. 內部執行的不變性
  3. 私有函數的檢查
  4. 程式運行的一致性

最後再提醒一次,斷言是用來判定程式中的某個執行點必然是或不是某個狀態,千萬不能把它當作if判斷式來使用,assert不應該被當做程式執行流程的一部份。


上一篇
[Day23] 例外處理 - Exception物件
下一篇
[Day25] 不同的String類別
系列文
Java入門的30張門票30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言