什么是assert,应该在说明情况下使用

3 篇文章 0 订阅
  • 是什么
    断言(assertion)是 C 语言中常用的防御式编程方式,减少编程错误。最常用的是在函数开始的地方,检测所有参数。有时候也可以在调用函数后,检查上下文是否正确。
    C 89 assert这个宏在 <assert.h>中,c99在 <cassert>,提供断言功能。当程序以 release 配置编译时(定义了 NDEBUG 宏),assert() 不会做检测;而当在 debug 配置时(没定义 NDEBUG 宏),则会在运行时检测 assert(cond) 中的条件是否为真(非 0),断言失败会直接令程序崩溃。

  • 需要注意什么
    由于在release 版本中,assert不被执行,千万不要在assert中加入有副作用的代码。

错误!!
assert(a++ != 1);
  • 什么时候用assert,什么时候处理异常
    assert用来防御程序员的代码编写错误,如传入正确的参数这是由程序员负责的:
//处理1~10的情况
void handle_one_to_ten(int num){
	assert(num<10 && num>0);
	...
}

程序员无法控制的运行时错误应该用异常处理,如服务器连接失败,内存分配失败等。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 Java 中,`assert` 是一个关键字,用于进行断言(Assertion)检查。断言是一种用于检查代码中的条件是否满足的机制,用于确保程序在运行时的特定条件下是正确的。 断言通常在开发和调试阶段使用,用于验证程序中的假设条件。它可以帮助开发人员在代码中插入一些预期为真的条件,并在运行时进行检查。如果断言条件为 false,那么会抛出一个 `AssertionError` 异常。 `assert` 关键字有两种形式: 1. 简单形式: ```java assert condition; ``` 这个简单形式中,`condition` 是一个布尔表达式,用于检查某个条件是否为 true。如果 `condition` 为 false,将会抛出 `AssertionError` 异常。 2. 带有说明的形式: ```java assert condition : explanation; ``` 这个形式中,`condition` 是一个布尔表达式,用于检查某个条件是否为 true。如果 `condition` 为 false,将会抛出 `AssertionError` 异常,并且 `explanation` 是一个字符串,用于提供更详细的说明或错误消息。 需要注意的是,默认情况下,Java 运行时是不启用断言的。如果要启用断言检查,可以在运行程序时使用 `-ea` 或 `-enableassertions` 参数来开启断言。 例如: ```java int x = 10; assert x > 0 : "x must be positive"; // 断言 x 大于 0,否则抛出 AssertionError 异常 ``` 断言对于确保代码的正确性和调试非常有用,但应该谨慎使用,因为在生产环境中开启断言会带来性能开销。因此,在生产环境中,通常会禁用断言。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值