剑指offer-11 旋转数组的最小数字
题目

Error和Exception本质是两个Class,他们都继承自Throwable这个类。Error表示严重的错误,比如OutOfMemoryError和StackOverflowError,出现Error程序就会停止,Error无法被捕获处理。Exception表示常见的一般的错误,可以被捕获处理,也可以向上层函数抛出,可以一直抛到main方法为止,如果在main方法内部还没有捕获异常,程序将会停止。
RuntimeException又叫UncheckedException,两者的区别从名字就可见一斑。RuntimeException及其子类不需要程序去捕获或者抛出,CheckedException及其子类必须去捕获或抛出。究其原因,在于RuntimeException及其子类是一些难以预估的错误,比如最常见的NullPointerException、IndexOutOfBoundsException等,这类错误编译器无法获知,只有当程序运行起来之后才能得到结果。而我们容易预估到CheckedException的出现,比如我们操作程序去读一个文件,就可能出现FileNotFoundException,这类Exception必须要去捕获处理或抛出。