一、程序的错误控制
在实际的开发中,往往会遇到一些基础的控制,比如是否数组越界,或者类型不匹配等。一般可以使用if语句来控制,但在一些重要的场景上使用assert或者其它一些自定义的宏(verify等 )。随着C++标准的不断推进,在新标准里又提供了在编译期进行判断的关键字static_assert。
有人可能会说,可以用异常来处理控制这些问题,但实际上,C/C++原则上是不推荐使用异常来处理问题的,除了其本身语言无法提供更多的堆栈信息等外,更重要的是,在C++程序中,一般到了这种地步,程序要么直接崩溃了(内存异常);要么,程序再跑已经没有任何意义。可能在某些特定场合下,程序捕获异常是有意义的,这就需要开发者自己处理了。
二、运行期控制
在运行期进行错误控制一般使用assert,基本的示例如下:
#include <assert.h>
#include <iostream>
#include <string>
#define SHOW_KLEN = 1
constexpr int KLEN = 100;
int buf[KLEN] = {
0};
void testAssert(int id) {
assert(id < KLEN);
std::cout << "id value:" << id << std::endl;
}
int main()