6.5 断言语句

参考书籍:Java面向对象程序设计(第二版)--耿祥义 张跃平编著

 

使用关键字assert声明一条断言语句,断言语句有以下两种格式

assert booleanExpression;

assert booleanExpression:messageException;

其中,booleanExpression必须是指为boolean型的表达式

messageException可以是值为字符串的表达式

 

 

如果使用assert booleanExpression;形式的断言语句,当booleanExpression的值是false时,程序从断言语句处停止执行;当是true时,程序继续执行。

 

如果使用assert booleanExpression:messageException;形式的断言语句,当booleanExpression的值是false时,程序从断言语句处停止执行,还要输出messageException表达式的值,提示用户出现了什么问题;当是true时,程序继续执行。

 

注意:

当使用java解释器直接运行应用程序时,默认关闭断言语句,调试程序时候可以使用-ea启用断言语句,例如:

java  -ea  mainClass(这个是项目名字)(这个是用在cmd里面玩的)

 

例子:

package p4;

import java.util.Scanner;

public class P4 {
    public static void main(String args[]){
        System.out.println("请输入正数确认");
        Scanner scan = new Scanner(System.in);
        double m=scan.nextDouble();               //输入一个数赋值给m
        assert m>0:"负数不能计算平方根";           //如果m>0,则执行下面的语句,如果是false,停止执行
                                                    //并把"负数不能计算平方根"打印出来
        System.out.println(m+"的平方根是:"+Math.sqrt(m));
    }

}

如果我输入-9,输出结果:

请输入正数确认

-9

Exception in thread "main" java.lang.AssertionError: 负数不能计算平方根

at p4.P4.main(P4.java:10)

 

 

 

断言语句在调试代码阶段非常有用,一般用于程序不准备通过捕获异常来处理的错误

在调式时候打开,正式运行时候关闭,但依然把断言语句保留,留待以后调试要用的时候开启断言即可

 

 

断言的其他知识:

  1. 断言可以局部开启,比如:父类禁止断言,而子类开启断言,所以一般说“断言不具有继承性”。
  2. 如果输入 -da 表示禁止断言
  3. 有关断言的更多参数(参考别人的)

-ea java -ea       打开所有用户类的assertion
-da java -da       关闭所有用户类的assertion
-ea:<classname> java -ea:MyClass1        打开MyClass1的assertion
-da:<classname> java -da: MyClass1       关闭MyClass1的assertion
-ea:<packagename> java -ea:pkg1         打开pkg1包的assertion
-da:<packagename> java -da:pkg1         关闭pkg1包的assertion
-ea:... java -ea:...        打开缺省包(无名包)的assertion
-da:... java -da:...        关闭缺省包(无名包)的assertion
-ea:<packagename>... java -ea:pkg1...     打开pkg1包和其子包的assertion
-da:<packagename>... java -da:pkg1...     关闭pkg1包和其子包的assertion
-esa java -esa       打开系统类的assertion
-dsa java -dsa       关闭系统类的assertion
综合使用 java -dsa:MyClass1:pkg1     关闭MyClass1和pkg1包的assertion

猜你喜欢

转载自blog.csdn.net/weixin_42717928/article/details/81201540
6.5