Java的异常分为两种,一种是运行时异常(RuntimeException),一种是非运行异常也叫检查式异常(Checked Exception)
区别:
运行式异常
虚拟机的通常操作中可能遇到的异常,是一种常见运行错误,只要程序设计得没有问题通常就不会发生。简单来说,属于运行错误,不可预计
不需要try-catch
例如:分母为0,数组溢出,空指针等
检查式异常
跟程序运行的上下文环境有关,即使程序设计无误,仍然可能因使用的问题而引发。简单来说,属于使用不当,需要提前防范
需要try-catch
例如:常见的IO异常,以及SQL异常
--------------------------------------------------------------------------------------------
常见异常:
CheckedException
InterruptException
被打断异常
详见:https://www.cnblogs.com/yanze/p/9985092.html
IOException
输入流输出流编程中,读写都得抛出
--------------------------------------------------------------------------------------------
RuntimeException
.NullPointerException
空指针异常
成因:调用了未经初始化的对象或者是不存在的对象,
eg:调用数组时超过数组大小
ClassNotFoundException
类不存在
成因:使用了不存在的类
ArithmeticException
算数异常
eg:比如除法时分母为0
ArrayIndexOutOfBoundsException
数组下标越界
eg:调用数组时成员时,下标超出了数组的范围
IllegalArgumentException
方法的参数错误
eg:g.setColor(int red,int green,int blue)这个方法中的三个值,如果有超过255的也会出现这个异常
IllegalAccessException
没有访问权限
IncompatibleClassChangeError
不兼容的类变化错误
当正在执行的方法所依赖的类定义发生了不兼容的改变时,抛出该异常。一般在修改了应用中的某些类的声明定义而没有对整个应用重新编译而直接运行的情况下,容易引发该错误。
InstantiationError
实例化错误。
当一个应用试图通过Java的new操作符构造一个抽象类或者接口时抛出该异常。
EOFException
(end of file)意外到达文件的末尾