Pei*_*ska 134 java assert assertion
怎么assert办?例如在函数中:
private static int charAt(String s, int d) {
    assert d >= 0 && d <= s.length();
    if (d == s.length()) return -1;
    return s.charAt(d);
}
aio*_*obe 228
如果您使用-enableassertions(或-ea简称)启动程序,则使用此语句
assert cond;
相当于
if (!cond)
    throw new AssertionError();
如果在没有此选项的情况下启动程序,则assert语句将不起作用.
例如,assert d >= 0 && d <= s.length();在您的问题中发布,相当于
if (!(d >= 0 && d <= s.length()))
    throw new AssertionError();
(如果你发布了-enableassertions那个.)
形式上,Java语言规范:14.10.该assert声明说以下内容:
14.10.的
assert声明
的断言是一个assert含有一个布尔表达式语句.断言被启用或禁用.如果断言已启用,则断言的执行会导致对布尔表达式进行求值,并在表达式求值时报告错误false.如果断言被禁用,则断言的执行不会产生任何影响.
当"启用或禁用"与控制-ea开关和"报告错误"是指一个AssertionError被抛出.
assert:您可以这样添加: "Error message":
assert d != null : "d is null";
指定抛出的AssertionError的错误消息应该是什么.
该帖子已被改写为一篇文章在这里.
Ric*_*arn 12
如果条件不满足,AssertionError将抛出一个.
但是必须启用断言; 否则assert表达什么都不做.看到:
http://java.sun.com/j2se/1.5.0/docs/guide/language/assert.html#enable-disable
assert是一个调试工具,AssertionFailed如果条件不为真,将导致程序抛出异常.在这种情况下,如果程序后面的两个条件中的任何一个评估为false,程序将抛出异常.  一般来说,assert不应该在生产代码中使用
虽然我已经阅读了很多关于这个的文档,但我仍然对如何,何时以及在何处使用它感到困惑.
让它变得非常简单:
当你遇到类似的情况:
    String strA = null;
    String strB = null;
    if (2 > 1){
        strA = "Hello World";
    }
    strB = strA.toLowerCase(); 
您可能会收到警告(在strB = strA.toLowerCase()上显示黄线;)strA可能会为strB生成NULL值.虽然你知道strB绝对不会在最后为null,以防万一,你使用assert来
1.禁用警告.
2.抛出异常错误如果发生最坏的事情(当你运行你的应用程序时).
有时,当你编译代码时,你没有得到你的结果,这是一个错误.但是应用程序不会崩溃,并且您花费了很多时间来查找导致此错误的位置.
所以,如果你把断言,像这样:
    assert strA != null; //Adding here
    strB = strA .toLowerCase();
你告诉编译器strA绝对不是空值,它可以"安静地"关闭警告.如果它是NULL(最坏情况发生),它将停止应用程序并向您发送错误以找到它.
| 归档时间: | 
 | 
| 查看次数: | 148689 次 | 
| 最近记录: |