两个概念,最近算是刚刚弄清楚
1)容错性
2)健壮性
这两个概念,很容易搞混,不健壮能容错吗?容错能不健壮吗?
这就是汉语的歧义造成的,在架构语言里,这两个概念还是能分得比较清的。
容错是指当异常发生时能够恢复到正常的处理状态的能力,例如,一个函数,当输入参数是NULL时,被自动当成空串来处理,这种设计,就是具备了容错性;容错性好的设计,可以让访问者很放心的调用,不必在调用前,对参数作过多的检测。这方面来说,所谓容错,就是不易错。
健壮性是指当异常发生的时候,系统能够承受,不会出现大的问题,同样以一个函数为例,当输入参数为NULL时,函数返回一个错误,并不接下来进行处理,不会因为空值导致系统down掉,这就是设计上考虑了健壮性。
对比一下,这两个概念,容错性强调一个系统对外的接口,而健壮性强调系统自身的实现。
理论上来说,java程序相对于c程序,健壮性是容易保证的,因为内存更容易控制,不容易产生内存垃圾;所有异常有捕获机制,外界容易得到反馈;但内存的溢出、cpu的过载,仍然是容易导致系统不够健壮的因素。
容错嘛,就是调用者犯了错误,能够容纳(谁不犯错?),至少给以反馈,告诉对方犯了错误,而不是接着去犯更大的错误。
健壮呢,就是对于各种的异常,都不能让系统产生大的损坏,仍然可以正常运行。
事实上,这两个特性,常常是互相依赖的,同时存在的。