首先代码的健壮性指的是:系统在不正常输入或不正常外部环境下仍能够表现正常的程度
这里我想分享的是一种面向健壮性的编程方式,我们之前对于spec的要求是我们要求客户按照spec前置条件的要求去进行输入,但是spec外的条件我们不没有涉及,也就是说,如果客户不按照spec去进行使用,我们是有权对客户这边进行任何操作的。但是这样不符合程序员的社会性需求,对此,我们在实现我们的代码时,必须要假设我们的客户很“刁蛮”,他会给你输入任何可能的情况,而我们程序员应该有一种对自己代码要求保守,而对客户开放的思想,这样才会有更多的客户去跟你合作,也就是说,当客户输入spec意外的情况是,我们要尽量避免下面出现一堆红字的情况,而是要设置这些异常的处理,让我们的程序运行起来更加的好看、专业。当然,我们具体要怎么处理呢?什么样的异常要处理,什么样的异常不用处理呢?下面主要来介绍一下这件事:
首先先看一下上面的图,这是一个对异常的基础的分类,首先这些异常都是有一个父类接口:throwable,这个是最大的。然后在这个基础上分成了Error和Exception类,Error类因为这个我们很少用,并且是程序员没法处理的,我理解是硬件层面那种内部错误,这个是不用管的,因为就算真的错了,程序员光从代码层面是没办法解决的,这里主要说一下Exception类的错误,一般将其分为Runtime异常和非Runtime异常。我认为Runtime异常是你程序员代码写的有问题,比如:空指针、数组越界等,这种异常我觉得作为程序员应该是去要改代码的,而不是在这捕获他,属于是掩耳盗铃的行为,而非Runtime的异常就不能怪程序员了,因为他们的发生,是外部原因造成的,所以只有这种异常是我们要捕获并且处理的,当然我们可以检查客户端的spec的合法性的时候可以手动抛出这种异常,在自己捕获,告知客户不可以这样去使用我们的ADT,所以我们只要关注这种非Runtime的异常并处理,就可以让我们的代码既有正确性又有健壮性了。