断言

-- Start

断言通常只用在开发和测试阶段, 用来表示致命的, 不可恢复的错误, 尤其是用在单元测试的时候.

断言的形式

assert 条件
assert 条件:表达式
断言将对条件进行判断, 如果条件是 false 则抛出 AssertionError 异常, 如果采用第二种形式, 表达式将被用来构造 AssertionError 异常.

启用和禁用断言

默认情况下, 断言是禁用的, 这意味着程序不会运行包含断言的行, 可以在运行程序时用 -ea 或 -enableassertions 选项来启用断言, 我们也可以只启用或禁用某几个类或某几个包的断言, 具体形式如下

java -ea[:<packagename>...|:<classname>]
java -enableassertions[:<packagename>...|:<classname>]

java -da[:<packagename>...|:<classname>]
java -disableassertions[:<packagename>...|:<classname>]

有些类不是由 ClassLoader 加载的, 而是由虚拟机加载的, 如果要启用或禁用这些类中的断言, 我们需要使用如下的形式, 不过通常我们不需要这么做.

java -esa 或 java -enablesystemassertions
java -dsa 或 -disablesystemassertions

在Eclipse中我们可以通过下面的方法来启用或禁用断言

1. 全局设置
Window-->Preferences-->Java-->Installed JREs
选择当前JDK,点击 Edit,在 Default VM Arguments 中输入 -ea 或 -enableassertions

2. 当前运行的程序
Run-->RunConfigurations,选择当前程序, 进入Arguments标签页,在VM arguments 中输入 -ea 或 -enableassertions

ClassLoader 类中提供了下来方法来动态启用或禁用断言

setDefaultAssertionStatus -- 用于启用或禁用断言
setPackageAssertionStatus -- 用于启用或禁用某些包中的断言
setClassAssertionStatus   -- 用于启用或禁用某些类中的断言
clearAssertionStatus      -- 用于关闭断言

一个简单的例子

public class Test {

	public static void main(String[] args) throws Exception {

		// 单元测试
		Person p = new Person();
		p.setName("尚波");
		assert "尚波".equals(p.getName());
	}
}

class Person {
	private String name;

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}
}

--- 更多参见: Java 精萃
-- 声 明:转载请注明出处
-- Last Updated on 2012-05-30
-- Written by ShangBo on 2012-05-30
-- End

你可能感兴趣的:(java,eclipse,exception,ClassLoader,String,单元测试)