java开发过程中,会出现一些特殊的、可能出错的情况,我们称之为异常;例如程序运行中遇到的NullPointerException、ArrayIndexOutOfBoundsException、FileNotFoundException,即空指针异常、数组下标越界异常和文件未找到异常;或者OutOfMemoryError、StackOverflowError,即内存溢出错误和堆栈溢出错误。这些看名字就能看出是在什么情况下出现的异常或者错误。
java中有关这一部分的类的继承关系如下:
由图中可以看出,java将所有非正常情况分为Error和Exception两种。其中Error错误,一般指与虚拟机相关的问题,例如系统崩溃,虚拟机错误,动态链接失败。这类错误无法恢复或者不可能捕获,将导致程序中断,通常应用程序无法处理这类错误。
异常(Exception)又可分为运行时异常(RuntimeException)和编译时异常;编译时异常是强制要求你在开发时就需要处理的异常,例如IOException,否则编译出错,而运行时异常则没有类似问题,不会强制要求异常处理;如下图,第8行会出现FileNotFoundException,这是一个编译时异常,必须处理;而第9行会出现NumberFormatException,这是一个运行时异常,即使不处理,编译也能通过,但是运行时会出错。
开发中需要注意异常处理,其中更需要花费精力的是运行时异常的处理;开发时需要养成良好的编程习惯,避免自身程序不严谨导致的空指针异常或者数组下标越界异常等等,需要针对性的做好非空判断和数组长度判断;如果是外围传过来的参数,则需要考虑种种可能出现的不合法输入等异常情况,并针对不同的情况做出相应的处理,或者捕获异常处理,或者向外抛出。