- C++的基本哲学是写的不好的代码不能运行,所以和C比较,C++编译时多了很多检查。
- 但是总是有在运行时候发生的run-time error ,编译时无法预知。
- 所以需要C++有一些手段让我们知道有一些不正常事情发生了。
如下例
- 这五句话其实每一句都hidden着危机,都有可能发生 run-time error
- 这些问题不是程序问题,而是外面情况带来的问题。比如 open the file, 这个文件可能不存在,可能这个文件被另外一个进程打开了并且那个进程说它要独占地打开。也有可能这个文件大小得不到,因为这个文件可能实际上是一个网络流,不是真的文件。也有可能根本不是文件,是个设备,Unix和Windows把外部设备当作文件,并且数据流链接的远端可能还在一直写数据,无法得到文件大小,所以第二个impossible
上图就叫做异常机制。
异常的抛出和捕捉
对C++解决问题比较好的方式是用exception, 当这种情况发生的时候我们抛出一个异常,告诉更上层的人说这儿有一个问题,我不能解决这个问题,你得来出面解决。所以可以用一个keyword叫做throw
比如我们发现一个数组越界了,我们就扔出一个东西,告诉别人这里出问题了。这就叫throw, throw是一个动词,所以如下是一条语句。对于C++来说什么都可以扔,包括object,原始类型都可以