这种应该不算是异常,是程序的bug,用C++的异常处理也比较难捕捉,越界读写都可能导致错误的结果,甚至导致程序崩溃,要处理这种情况只能靠平时写代码时多积累,在有可能发生越界的地方做相应的判断处理。另外,可以用一些静态代码检查工具来帮助发现问题,但是并不能保证所有问题都能发现,关键还是要靠程序员的经验,所以说一般公司招程序员都需要有经验的。比较好的工具有pc-lint,比如我下面这个例子:
我上面的代码发生了写越界,但是运行时,并不能捕获异常。使用pc-lint检查工具来检查,可以发现这两个地方的越界写都可以检查出来。双击下面的提示就能转换到有问题的代码。