A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

cwwcyy

初级黑马

  • 黑马币:

  • 帖子:

  • 精华:

© cwwcyy 初级黑马   /  2015-9-1 00:36  /  2936 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

7黑马币
什么时候用assert????大神求解

最佳答案

查看完整内容

语法: assert assert : 当boolean表达式为false时,抛出AssertError,程序终止运行。 例子: Java code public class Cloned { public static void main(String[] args) { System.out.println("classes"); try{ //when running as java -ea Cloned -5, it's supposed to throw AssertError; assert (Integer.parseInt(args[0]) > 0):"assertTest"; }catch ...

5 个回复

正序浏览
断言是一个包含布尔表达式的语句,在执行这个语句时假定该表达式为 true。如果表达式计算为 false,那么系统会报告一个 Assertionerror。它用于调试目的: assert(a > 0); // throws an Assertionerror if a <= 0  断言可以有两种形式: assert Expression1 ;  assert Expression1 : Expression2 ;    Expression1 应该总是产生一个布尔值。   Expression2 可以是得出一个值的任意表达式。这个值用于生成显示更多调试信息的 String 消息。   断言在默认情况下是禁用的。要在编译时启用断言,需要使用 source 1.4 标记:   javac -source 1.4 Test.java    要在运行时启用断言,可使用 -enableassertions 或者 -ea 标记。   要在运行时选择禁用断言,可使用 -da 或者 -disableassertions 标记。   要系统类中启用断言,可使用 -esa 或者 -dsa 标记。还可以在包的基础上启用或者禁用断言。    可以在预计正常情况下不会到达的任何位置上放置断言。断言可以用于验证传递给私有方法的参数。不过,断言不应该用于验证传递给公有方法的参数,因为不管是否启用了断言,公有方法都必须检查其参数。不过,既可以在公有方法中,也可以在非公有方法中利用断言测试后置条件。另外,断言不应该以任何方式改变程序的状态。
回复 使用道具 举报
java中 assert的前途一片昏暗
回复 使用道具 举报
断言是一个包含布尔表达式的语句,在执行这个语句时假定该表达式为 true。如果表达式计算为 false,那么系统会报告一个 Assertionerror。它用于调试目的: assert(a > 0); // throws an Assertionerror if a <= 0  断言可以有两种形式: assert Expression1 ;  assert Expression1 : Expression2 ;    Expression1 应该总是产生一个布尔值。   Expression2 可以是得出一个值的任意表达式。这个值用于生成显示更多调试信息的 String 消息。   断言在默认情况下是禁用的。要在编译时启用断言,需要使用 source 1.4 标记:   javac -source 1.4 Test.java    要在运行时启用断言,可使用 -enableassertions 或者 -ea 标记。   要在运行时选择禁用断言,可使用 -da 或者 -disableassertions 标记。   要系统类中启用断言,可使用 -esa 或者 -dsa 标记。还可以在包的基础上启用或者禁用断言。    可以在预计正常情况下不会到达的任何位置上放置断言。断言可以用于验证传递给私有方法的参数。不过,断言不应该用于验证传递给公有方法的参数,因为不管是否启用了断言,公有方法都必须检查其参数。不过,既可以在公有方法中,也可以在非公有方法中利用断言测试后置条件。另外,断言不应该以任何方式改变程序的状态。
回复 使用道具 举报
这是个定义在 <assert.h> 中的宏, 用来测试断言。一个断言本质上是写下程序员的假设, 如果假设被违反, 那表明有个严重的程序错误。例如, 一个假设只接受非空指针的函数, 可以写:     assert(p != NULL);一个失败的断言会中断程序。断言不应该用来捕捉意料中的错误, 例如  malloc() 或 fopen() 的失败。
回复 使用道具 举报
语法:

assert <boolean表达式>
assert <boolean表达式> : <错误信息表达式>
当boolean表达式为false时,抛出AssertError,程序终止运行。

例子:
Java code


public class Cloned {  
    public static void main(String[] args) {  
        System.out.println("classes");  
        try{  
            //when running as java -ea Cloned -5, it's supposed to throw AssertError;  
            assert (Integer.parseInt(args[0]) > 0):"assertTest";  
        }catch(Exception e){  
            //Exception fails to catch "AssertError"; so no chance to execute the following block;  
            System.out.println("catch exec..");  
        }  
        //finally will be always executed before main() is done.  
        //Once any exception is thrown out here, program terminates here...Hence no chance to throw assertError;  
        finally{  
            throw new IllegalArgumentException();  
        }  
    }  
}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马