首页 > eclipse 中断言使用的设定

eclipse 中断言使用的设定

JAVA是从JDK1.4才开始支持断言的(添加了关键字assert)
选择菜单"Windows"->"Perferences",在对话框中找到"Java"->"Complier"->"Compliance and Classfiles",把"Use default compliance settings"前的勾去掉,将下面的两个选项均选为1.4即可。
附:断言介绍

断言使用方式



  断言可以有两种形式

  1.assert Expression1

  2.assert Expression1:Expression2

  其中Expression1应该总是一个布尔值,Expression2是断言失败时输出的失败消息的字符串。如果Expression1为假,则抛出一个 AssertionError,这是一个错误,而不是一个异常,也就是说是一个不可控制异常(unchecked Exception),AssertionError由于是错误,所以可以不捕获,但不推荐这样做,因为那样会使你的系统进入不稳定状态。



起用断言



  断言在默认情况下是关闭的,要在编译时启用断言,需要使用source1.4标记 既javac source1.4 Test.java ,在运行时启用断言需要使用 -ea参数 。要在系统类中启用和禁用断言可以使用 -esa 和 -dsa参数。

  

例如:

 public class AssertExampleOne{

   public AssertExampleOne(){}

   public static void main(String args[]){

      int x=10;

      System.out.println("Testing Assertion that x==100");

      assert x=100;"Out assertion failed!";

      System.out.println("Test passed!");

   }

}



如果编译时未加 -source1.4,则编译通不过

在执行时未加 -ea 时输出为

Testing Assertion that x==100

Test passed

jre忽略了断言的就代码,而使用了该参数就会输出为

Testing Assertion that x==100

Exception in thread "main" java.lang.AssertionError: Out assertion failed!

        at AssertExampleOne.main(AssertExampleOne.java:6)



断言的副作用



  由于程序员的问题,断言的使用可能会带来副作用 ,例如:

  boolean isEnable=false;

  //...

  assert isEnable=true;

  这个断言的副作用是因为它修改了程序中变量的值并且未抛出错误,这样的错误如果不细心的检查是很难发现的。但是同时我们可以根据以上的副作用得到一个有用的特性,根据它来测试断言是否打开。



 public class AssertExampleTwo{



   public static void main(String args[]){

     boolean isEnable=false;

     //...

     assert isEnable=true;

     if(isEnable==false){

       throw new RuntimeException("Assertion shoule be enable!");

     }

   }

}



何时需要使用断言

编写代码时,我们总是会做出一些假设,断言就是用于在代码中捕捉这些假设

  可以将断言看作是异常处理的一种高级形式

  断言表示为一些布尔表达式,程序员相信在程序中的某个特定点该表达式值为真

  可以在任何时候启用和禁用断言验证,因此可以在测试时启用断言而在部署时禁用断言。同样,程序投入运行后,最终用户在遇到问题时可以重新起用断言。

  使用断言可以创建更稳定,品质更好且易于除错的代码

  当需要在一个值为FALSE时中断当前操作的话,可以使用断言

  单元测试必须使用断言(Junit/JunitX)

  除了类型检查和单元测试外,断言还提供了一种确定个种特性是否在程序中得到维护的极好的方法

  使用断言使我们向按契约式设计更近了一部



  1.可以在预计正常情况下程序不会到达的地方放置断言 :assert false

  2.断言可以用于检查传递给私有方法的参数。(对于公有方法,因为是提供给外部的接口,所以必须在方法中有相应的参数检验才能保证代码的健壮性)

  3.使用断言测试方法执行的前置条件和后置条件

  4.使用断言检查类的不变状态,确保任何情况下,某个变量的状态必须满足。(如age属性应大于0小于某个合适值)



什么地方不要使用断言



  断言语句不是永远会执行,可以屏蔽也可以启用

因此:

  1.不要使用断言作为公共方法的参数检查,公共方法的参数永远都要执行

  2.断言语句不可以有任何边界效应,不要使用断言语句去修改变量和改变方法的返回值

 

转载于:https://www.cnblogs.com/superch0054/archive/2006/09/29/4010193.html

更多相关:

  • nan 是not a number ,inf是无穷大 numpy.nan_to_num(x): 使用0代替数组x中的nan元素,使用有限的数字代替inf元素...

  • 简介 Simple Reference  基础CUDA示例,适用于初学者, 反映了运用CUDA和CUDA runtime APIs的一些基本概念.Utilities Reference  演示如何查询设备能力和衡量GPU/CPU 带宽的实例程序。Graphics Reference  图形化示例展现的是 CUDA, OpenGL,...

  • 在做开发的过程中难免需要给内核及下载的一些源码打补丁,所以我们先学习下Linux下使用如如何使用diff制作补丁以及如何使用patch打补丁。...

  • 我在调研ATS 4.2.3挂载SSD的过程中,遇到很多坑,特此详细记录我摸索的主要过程,以便大家以后避免之。 基本思路可以完全照搬参考文献[2][3] 下面的安装假定是以root用户身份进行的,Linux服务器已经安装好系统,磁盘已经做好分区。 首先需要认识我们的Linux服务器的硬件配置和软件情况 硬件配置: DELL...

  • 该博文整理一些在使用stl编程过程中遇到的小经验: 1.在多线程环境下面打印调试,如何使用cout及时刷新到屏幕上? 在C中我们经常这样使用: printf("Hello World "); fflush(stdout); 如果使用stl,我们可以这样使用: cout << "Hello World" << endl <...

  • 现在制作个人网页越来越流行,你会发现很多设计师、媒体人、职场人都建立了自己的网站,用来积累粉丝、展示作品、或者找工作。那么不懂技术知识、也没有太多资金的学生,可以建立自己的网站吗?当然也是可以的!其实个人网站建立的原理都差不多,不懂技术的情况下,可以使用自助建站系统,快速生成个人网站。个人网页制作教程如下:进入「上线了」官网,注册账号...

  • 在plugin.config中添加 stats_over_http.so 然后重启服务器,在浏览器中输入下面的地址查询 http://host:port/_stats 这里host是ATS所在的hostname或是ip,port就是侦听http连接的端口,按照配置我这里分别是10.10.110.162和8081 http:/...

  • 改动信息 详情可以查看ceph官网nautilus Dashboard功能 增加的新功能 支持多用户使用SSO的用户验证模式支持审计模式新的登录页,可以展示更多的集群健康指标使用swagger api的rest api文档 增加的新的管理特性 对于OSD的管理(将osd标记为down,out,修改osd的config ,恢复...

  • 1.Proteus中添加组件后双击引脚可以快速生成一个最近的端口。 2.按A调出设置界面 3.在String中写:net=H#,"H"可以换成自定义前缀。count为起始值,increment为增量。 4.依次点击想要编号的引脚。 转载于:https://www.cnblogs.com/viaduct/p/5842429.html...

  • 1.Goto Anything-快速查找(ctrl + P)   输入@+函数名可以快速找到函数输入#+文本可以快速进行文件内文本匹配2.命令模式Ctrl+Shift+P:打开命令面板    Ctrl+P:搜索项目中的文件   Ctrl+W:关闭当前打开文件  Ctrl+Shift+W:关闭所有打开文件 Ctrl+Shift+V:粘贴...