java之断言

   断言一般用于程序的自我保护。

      

  1  断言的概念:

   我认为断言的概念不是断定的意思,而是判断的意思。当我们写程序时,有时候希望某个值符合我们的想法,如果那个值不符合我们的想法,我们才能改正它。(有点绕 来看一个例子)

   

上面的语句会在运行时判断。

其实断言也就是为了解决这个问题:我们希望可以在测试的时候如果某个值不满足我们的要求,能抛出异常,满足我们的要求了,就什么也不做,并且不用写任何的throw语句。

java提供了两种形式(这个过程需要使用

assert condition; 和assert condition:expression(如果条件为false 会抛出一个AssertError(其实属于异常体系中的Error),第二种会把表达式的结果封装在Error中)

 

    这个过程需要使用 如果我们没有带参数进去,那么断言不会开启。我们的问题就解决了,如果在测试时加参数判断成功,就可以决定在运行时不加参数进行处理。



2 启用和禁用断言

  上面已经说如何启用断言的,默认的禁用的。启用断言或者禁用断言不必重新编译。启动断言或禁用断言是类加载器的功能,断言被禁用,类加载器就无视断言代码。因此如果我们测试好了,就相当于没有任何判断的代码,我们最初想要实现的目标也达到了。

下面的这个可能就很少用了:



3 使用断言完成参数检查

java语言中给出了三种机制来处理系统错误:

1 抛出异常

2  日志

3 使用断言

那么什么时候使用断言呢?

1 断言致命的,不可恢复的错误

2 断言只用于开发和测试阶段

时间: 2024-10-03 13:46:41

java之断言的相关文章

Java断言assert

public class Welcome{ public static void main(String[] args){ assert false; System.out.println("Welcome world"); } } cmd下输入命令 javac Welcome.java java Welcome 输出为 Welcome world java默认是不开启断言的,这种情况下assert语句将会被跳过不执行. 为了执行assert语句,需要在添加-ea参数,cmd下重新输入

java中的断言

断言:也就是所谓的assertion,是jdk1.4后加入的新功能. 它主要使用在代码开发和测试时期,用于对某些关键数据的判断,如果这个关键数据不是你程序所预期的数据,程序就提出警告或退出. 当软件正式发布后,可以取消断言部分的代码.java中使用assert作为断言的一个关键字,这就可以看出java对断言还是很重视的,因为如果不是很重要的话,直接开发个类就可以了,没必要新定义一个关键字. 语法1:assert expression;                //expression代表一

Java正则零宽断言出现PatternSyntaxException异常

今天在写正则的时候发现Java正则使用零宽断言(?<!exp) 匹配前面不是exp的位置,报出了一个异常: Exception in thread "main" java.util.regex.PatternSyntaxException: Look-behind group does not have an obvious maximum length near index 26 (?<=<img[^>]*src="[^"]*")

JAVA断言使用

转自http://www.blogjava.net/liulu/archive/2006/10/24/77005.html 相信学过c,c++的朋友一定不会对断言感到陌生.下面介绍一下断言在JAVA中的使用,JAVA是从JDK1.4才开始支持断言的(添加了关键字assert),请注意老版的JRE不支持. 断言概述 编写代码时,我们总是会做出一些假设,断言就是用于在代码中捕捉这些假设  可以将断言看作是异常处理的一种高级形式  断言表示为一些布尔表达式,程序员相信在程序中的某个特定点该表达式值为真

转载--编写高质量代码:改善Java程序的151个建议(第1章:JAVA开发中通用的方法和准则___建议16~20)

阅读目录 建议16:易变业务使用脚本语言编写 建议17:慎用动态编译 建议18:避免instanceof非预期结果 建议19:断言绝对不是鸡肋 建议20:不要只替换一个类 回到顶部 建议16:易变业务使用脚本语言编写 Java世界一直在遭受着异种语言的入侵,比如PHP,Ruby,Groovy.Javascript等,这些入侵者都有一个共同特征:全是同一类语言-----脚本语言,它们都是在运行期解释执行的.为什么Java这种强编译型语言会需要这些脚本语言呢?那是因为脚本语言的三大特征,如下所示:

黑马程序员___java断言

----------- android培训.java培训.java学习型技术博客.期待与您交流! --------- 下面介绍一下断言在JAVA中的使用,JAVA是从JDK1.4才开始支持断言的(添加了关键字assert),请注意老版的JRE不支持. 断言概述   编写代码时,我们总是会做出一些假设,断言就是用于在代码中捕捉这些假设  可以将断言看作是异常处理的一种高级形式  断言表示为一些布尔表达式,程序员相信在程序中的某个特定点该表达式值为真  可以在任何时候启用和禁用断言验证,因此可以在测

(转)assert 断言式编程

编写代码时,我们总是会做出一些假设,断言就是用于在代码中捕捉这些假设,可以将断言看作是异常处理的一种高级形式.断言表示为一些布尔表达式,程序员相信在程序中的某个特定点该表达式值为真.可以在任何时候启用和禁用断言验证,因此可以在测试时启用断言,而在部署时禁用断言.同样,程序投入运行后,最终用户在遇到问题时可以重新起用断言. 使用断言可以创建更稳定,品质更好且不易于出错的代码.当需要在一个值为FALSE时中断当前操作的话,可以使用断言.单元测试必须使用断言(Junit/JunitX)除了类型检查和单

Java陷阱之assert关键字

2007-09-23 15:03:23 版权声明:原创作品,如需转载,请与作者联系.否则将追究法律责任. Java陷阱之assert关键字 一.概述 在C和C++语言中都有assert关键,表示断言. 在Java中,同样也有assert关键字,表示断言,用法和含义都差不多. 二.语法 在Java中,assert关键字是从JAVA SE 1.4 引入的,为了避免和老版本的Java代码中使用了assert关键字导致错误,Java在执行的时候默认是不启动断言检查的(这个时候,所有的断言语句都将忽略!)

[转载]Java陷阱之assert关键字

Java陷阱之assert关键字 一.概述 在C和C++语言中都有assert关键,表示断言. 在Java中,同样也有assert关键字,表示断言,用法和含义都差不多. 二.语法 在Java中,assert关键字是从JAVA SE 1.4 引入的,为了避免和老版本的Java代码中使用了assert关键字导致错误,Java在执行的时候默认是不启动断言检查的(这个时候,所有的断言语句都将忽略!),如果要开启断言检查,则需要用开关-enableassertions或-ea来开启. assert关键字语