异常小结
java 程序发生的错误一般分为两种,语法错误和运行错误,例如几个catch()语句写的顺序不对有可能产生语法错误,
catch(IOException e){}
catch(FileNotFoundException e){}
如果这样写第二个分支将永远执行不到,在java语言里如果存在某些语句永远也执行不到的话编译时会出错,属于语法错误。java语言中所有的异常类的根类是throwable,throwable被error类和Exception类继承。这里说一下error和Exception的区别。
error 表示恢复不是不可能但很困难的情况下的一种严重问题。比如说内存溢出。不可能指望程序能处理这样的情况;
exception 表示一种设计或实现问题。也就是说,它表示如果程序运行正常,从不会发生的情况。所以程序只需捕获Excption类型的异常,如果你显示写了捕获error的语句就等于没写一样。
Exception异常下面又分为检查异常和运行异常,编译器只检查检查异常而不检查运行异常。关于什么是运行异常可以这样理解:
运行异常就是程序员可以用编程的手段来避免的异常,例如做除法运算的时候添加一条判断分母是否为0的语句就可以防止因为分母为0导致的ArithmeticException异常的发生。
常见的运行异常有:ArithmeticException,NullPointerException,ArrayIndexOutOfBoundsException,ClassCastException等。
常见的检查异常有:IOException等。