首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

ASSERT_VALID和ASSERT宏分析

ASSERT_VALID宏用来在运行时检查一个对象的内部合法性,比如说现在有一个学生对象,我们知道每个学生的年龄一定大于零,若年龄小于零,则该学生对象肯定有问题。...函数,该函数实现对象的内部一致性检查,当你创建一个可重用类时,应该重载这个函数(VC中缺省已经重载了该函数),你可以在该函数中进行必要的检查工作....以上两个宏均只在Debug版本中有效,与ASSERT相对应的是VERIFY.VERIFY宏在Debug版本中与ASSERT相同,在Release版本中仅执行参数表达式,不进行校验....ASSERTASSERT_VALID 都是用于Debug的,当括号中的表达式为FALSE时,会弹出对话框通知, 你可以自己加上一句ASSERT(FALSE),看看执行时有什么东东。...ASSERT_VALID用于对C++对象或指针进行有效性判断,如果出错,结果和ASSERT一样。 注意:二者都只能在MFC工程里用。

85820
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    assert()函数用法

    assert宏的原型定义在中,其作用是如果它的条件返回错误,则终止程序执行,原型定义: #include void assert( int expression...在调试结束后,可以通过在包含#include 的语句之前插入 #define NDEBUG 来禁用assert调用,示例代码如下: #include #define...(nNewSize >=0);   assert(nNewSize <= MAX_BUFFER_SIZE);   ... }   2)每个assert只检验一个条件,因为同时检验多个条件时,如果断言失败...,无法直观的判断是哪个条件失败,如:   不好: assert(nOffset>=0&& nOffset+nSize<=m_nInfomationSize);   好: assert(nOffset >...正确: assert(i <100); i++;   4)assert和后面的语句应空一行,以形成逻辑和视觉上的一致感。   5)有的地方,assert不能代替条件过滤。

    1.2K80

    异常工具类-Assert

    # Assert Assert断言工具类是直接从org.springframework.util.Assert中拷贝出来的,api的用法和定义和Spring Assert一模一样,在Spring Assert...的使用经验可无缝迁移到该Assert中 区别点在于对于断言的异常,不再像Spring一样抛出IllegalArgumentException,默认转为抛出自定义的ValidException,与全局异常紧密结合...同时提供了所有重载的接口,支持通过AbstractException子类class,构造异常实例,根据class抛出对应异常,目前支持推断所有自定义异常中,具有单字符串构造方法的异常实例 Assert...判断后进行返回的场景 或是结合全局异常后,每次抛出异常必须得写try catch代码的场景 目的在于进一步精简代码 # 基本使用 以isTrue为例,判断条件是否成立,如果不成立则抛出异常,同时带有异常message Assert.isTrue...(0==1, "条件不满足"); 支持推断AbstractException子类 Assert.isTrue(0==1, "条件不满足", BizNoStackException.class);

    48550

    java的断言(assert)

    概述 在C和C++语言中都有assert关键,表示断言。在Java中,同样也有assert关键字,表示断言,用法和含义都差不多。...在Java中,assert关键字是从JAVA SE 1.4 引入的,为了避免和老版本的Java代码中使用了assert关键字导致错误,Java在执行的时候默认是不启动断言检查的(这个时候,所有的断言语句都将忽略...语法 断言(assert)的语法很简单,有两种写法: 1、assert 如果为true,则程序继续执行。...2、用assert代替if是陷阱之二。...assert的判断和if语句差不多,但两者的作用有着本质的区别:assert关键字本意上是为测试调试程序时使用的,但如果不小心用assert来控制了程序的业务流程,那在测试调试结束后去掉assert关键字就意味着修改了程序的正常的逻辑

    4.5K100
    领券