Java知多少(54)斷言詳解

來源:互聯網
上載者:User

標籤:

斷言的概念斷言用於證明和測試程式的假設,比如“這裡的值大於 5”。
斷言可以在運行時從代碼中完全刪除,所以對代碼的運行速度沒有影響。斷言的使用斷言有兩種方法:
  • 一種是 assert<<布林運算式>> ;
  • 另一種是 assert<<布林運算式>> :<<細節描述>>。
如果布林運算式的值為false , 將拋出AssertionError 異常; 細節描述是AssertionError異常的描述文本使用 javac –source 1.4 MyClass.java 的方式進行編譯樣本如下:
 1 public class AssertExample { 2     public static void main(String[] args) { 3         int x = 10; 4         if (args.length > 0) { 5             try { 6                 x = Integer.parseInt(args[0]); 7             } catch (NumberFormatException nfe) { 8                 /* Ignore */ 9             }10         }11         System.out.println("Testing assertion that x == 10");12         assert x == 10 : "Our assertion failed";13         System.out.println("Test passed");14     }15 }

由於引入了一個新的關鍵字,所以在編譯的時候就需要增加額外的參數,要編譯成功,必須使用 JDK1.4 的 javac 並加上參數‘-source 1.4‘,例如可以使用以下的命令編譯上面的代碼:

    javac -source 1.4 AssertExample.java
以上程式運行使用斷言功能也需要使用額外的參數(並且需要一個數位命令列參數),例如:
    java -ea AssertExample 1
程式的輸出為:
Testing assertion that x == 10
Exception in thread "main" java.lang.AssertionError:Our assertion failed
at AssertExample.main(AssertExample.java:20)

由於輸入的參數不等於 10,因此斷言功能使得程式運行時拋出斷言錯誤,注意是錯誤, 這意味著程式發生嚴重錯誤並且將強制退出。斷言使用 boolean 值,如果其值不為 true 則 拋出 AssertionError 並終止程式的運行。斷言推薦使用方法用於驗證方法中的內部邏輯,包括:
  • 內在不變式
  • 控制流程程不變式
  • 後置條件和類不變式
注意:不推薦用於公有方法內的前置條件的檢查。運行時屏蔽斷言運行時要屏蔽斷言,可以用如下方法:
    java –disableassertions 或 java –da 類名
運行時要允許斷言,可以用如下方法:
    java –enableassertions 或 java –ea類名  系列文章:

Java知多少(上)

Java知多少(39)interface介面

Java知多少(40)介面和抽象類別的區別

Java知多少(41)泛型詳解

Java知多少(42)泛型萬用字元和型別參數的範圍

Java知多少(43)異常處理基礎

Java知多少(44)異常類型

Java知多少(45)未被捕獲的異常

Java知多少(46)try和catch的使用

Java知多少(47)多重catch語句的使用

Java知多少(48)try語句的嵌套

Java知多少(49)throw:異常的拋出

Java知多少(50)Java throws子句

Java知多少(51)finally

Java知多少(52)內建異常

Java知多少(53)使用Java建立自己的異常子類

Java知多少(54)斷言詳解

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.