2008-04-10
我们需要assert吗[二]
关键字: assert /**
* Internal constructor for already-normalized pathname strings.
* The parameter order is used to disambiguate this method from the
* public(File, String) constructor.
*/
private File(String child, File parent) {
assert parent.path != null;
assert (!parent.path.equals(""));
this.path = fs.resolve(parent.path, child);
this.prefixLength = parent.prefixLength;
}
上面的这段代码是无意间看到的,看到后,觉得很是奇怪,在一个这么公用的java.io.File居然用了assert。
我继续翻java的源代码,试着去找,发现使用了assert的地方甚少。
当然,在这里就算编译运行不开启assert功能,也影响不大,不会因为使用了assert而使代码的语义逻辑发生改变。
- org.eclipse.jface.util.Assert AssertionFailedException
- org.eclipse.core.runtime.Assert IllegalArgumentException
- junit.framework.Assert AssertionFailedError
都提供了替代assert功能的Assert类,上面的几个Assert类的功能和代码都几乎相似,在断言失败后,也都会抛出一个对应的断言失败异常。
看了上面替代assert的Assert类,其实都是在做一件事情,就是规避程序自身的问题,就是规避程序员引入的错误.
- 如果不使用assert,就可以使用Assert类,而不用去依赖一个assertion开启与关闭的开关.
- 如果使用assert,则记得在调试代码时候要开启,发布后,肯定是需要关闭assert功能的.
发表评论
- 浏览: 6462 次
- 性别:

- 来自: 上海

- 详细资料
搜索本博客
我的相册
IndexCardGenerator
共 13 张
共 13 张
最近加入圈子
最新评论
-
RAP[1] RAP开发环境的安装
Eclipse RAP的客户端渲染是基于qooxdoo,一个很优秀的开源java ...
-- by Quake Wang -
惊艳!!! Swt 上的Ribbon.
dev.java.net上早有ribbon的实现了,不过是swing的:http ...
-- by diggywang -
.net终于被java同化了
支持Java
-- by love2008 -
Groovy的Eclipse插件
多谢,在这里找到插件了
-- by wdlfellow

![lggege的博客: [203] lG 槛~ 迈过去! 用户头像](http://www.javaeye.com/upload/logo/user/18674/d58959b8-54ec-376e-b9f2-5d3a36beaa2f.jpg?1206674671)




评论排行榜