書上說是在調(diào)試時(shí)使用,但我覺得用起來并不方便,有什么技巧么?具體是怎么用的呢?能舉個(gè)例子么?我用起來感覺還沒throws方便啊……
4 回答

哆啦的時(shí)光機(jī)
TA貢獻(xiàn)1779條經(jīng)驗(yàn) 獲得超6個(gè)贊
assert
用于確保代碼邏輯上不可能發(fā)生的事情絕對不發(fā)生(比如factory method返回NULL
),而exception用于處理一些有可能發(fā)生的事情(比如用戶輸入錯(cuò)誤,比如網(wǎng)絡(luò)鏈接斷開)。
assert
如果非真,拋出的是AssertionError
,而不是Exception
,而Error
一般是不catch的,所以它的作用就是在測試的時(shí)候early crash,你一旦穩(wěn)定下來確定不會(huì)出現(xiàn)了,在production環(huán)境中是可以完全關(guān)掉的(去掉JVM參數(shù)-ea
即可,JVM會(huì)用nop
代替,不影響性能)。
Exception
及其處理往往是業(yè)務(wù)邏輯的一部分。而Assertion
不是。后者應(yīng)該crash early,而前者不是。
需要注意的是assert
是可以被關(guān)閉的,所以里面不可以有任何重要、正常的業(yè)務(wù)邏輯代碼的調(diào)用。

蕭十郎
TA貢獻(xiàn)1815條經(jīng)驗(yàn) 獲得超13個(gè)贊
添加回答
舉報(bào)
0/150
提交
取消