如果程式不准備透過捕獲異常來處理的錯誤,這時該怎麼辦呢?我們可以透過斷言語句來解決。
斷言語句在偵錯程式碼階段非常有用,且一般用於程式不准備透過捕獲異常來處理的錯誤。
例如:當發生某個錯誤時,例如,當帳號交易時,支出金額為正數或收入金額為負數,此時要求程式必須立即停止執行。在偵錯程式碼階段讓斷言語句發揮作用,這樣就可以發現一些致命的錯誤,當程式正式運行時就可以關閉斷言語句,但仍把斷言語句保留在原始程式碼中,如果以後應用程式又需要調試,可以重新啟用斷言語句。
我們使用關鍵字assert聲明一條斷言語句,斷言語句有以下兩種格式:
assertbooleanExpression;//求值為boolean型別的表達式assertbooleanExpression:messageException;//求值為字串型別的表達式
當值為true時,程式從斷言語句繼續執行。
當值為false時,程式會從斷言語句處停止執行。
當值為true時,程式從斷言語句繼續執行。
當值為false時,程式從斷言語句處停止執行,並輸出messageException表達式的值,提示使用者出現了怎樣的問題。
例如,對於斷言語句:
asserti>=0;
如果表達式i >= 0的值為true,程式繼續執行;如果表達式i >= 0的值為false,程式立刻結束執行。
當使用Java解釋器直接執行應用程式時,預設關閉斷言語句,在偵錯程式時可以使用-ea啟用斷言語句,例如:
java-eamainclass
例如:
publicclassMain{publicstaticvoidmain(String[]args){int[]score={-120,98,96,94,92};intsum=0;for(intnumber:score){//陣列用for遍歷assertnumber>=0:負數不能是成績;sum=sum+number;}System.out.println(總成績:+sum);}}
運行結果如下:
總成績:260