今天在自己实现RxJava框架时,发现一些参数异常、流关闭异常等,Rxjava框架是会抛出相应的异常的,所以自己编写实现这块源码的时候,渐渐的也需要使用到这些知识,这里对这块做一下回顾总结。
使用
我们代码编写实现中,常常对输入参数错误、数组越界等,可以抛出相应的异常,例如代码:
if (!sourceclass.isInterface()) {
throw new IllegalArgumentException("sourceclass is not a interface");
}
Java异常的分类图:
Throwable
是java异常的顶级类,所有异常都继承于这个类。
Error,Exception是异常类的两个大分类。
Error
Error是非程序异常,即程序不能捕获的异常,一般是编译或者系统性的错误,如OutOfMemorry内存溢出异常等。
Exception
Exception是程序异常类,由程序内部产生。Exception
又分为运行时异常,非运行时异常类。
运行时异常
运行时异常的特点是java编译器不会检查它,也就是说,当程序中可能出现这类异常时,会编译通过,但是在运行时会出现错误。
如NullPointException,ArrayIndexoutOfBuoundsException等。
非运行时异常
程序必须进行处理的异常,编译不通过,必须捕获或者抛出。如IOException,ClassNo
tFoundException等。
java常见的异常有哪些?
NullPointerException
空指针异常,操作一个null对象的方法或者属性时触发。
OutOfMemoryError
内存异常异常,这不是程序能控制的,是指要分配的对象的内存超出了当前最大的内存堆,需要调整堆内存大小(-Xmx)以及优化才程序。
IOException
IO,即:input,output,我们在读写磁盘文件,网络内容的时候会发生的一种异常,这种异常是受检查的异常,需要手工捕获。
FileNotFoundException
文件找不到异常,如果文件不存在就会抛出这种异常。
ClassNotFoundException
类找不到异常,在类路径下不能加载指定的类。
ClassCastException
类型转换异常,如将一个数字强制转换成字符串。
throw和throws的区别?
throw: 是真实抛出一个异常
throws: 是声明程序可能会抛出一个异常