API&SPI
- API 、SPI
API:直接的功能的接口和方法
SPI:继承扩展,完成自定义功能的类与方法,接口。 - SPI的定义与实现原理
SPI的定义:Java类库的内部代码能够调用外部类的方法。基于接口的实现+策略模式+配置文件实现动态加载机制
实现原理:反射。
使用ServiceLoader加载配置文件,本质是反射动态加载。
异常
- 异常类型
Error:编译异常;Runtome Exception:运行时异常。Exception:库类异常;throw:自定义异常
ArithmeticExecption:算数异常
NullPointerException:空指针异常
ClassCastException:类型强制转换异常
ArrayIndexOutOfBoundsException:数组下标越限异常
NumberFormatException:字符串转数字异常
IOException:输入输出异常
java.lang.AbstractMethodError:抽象方法异常
java.lang.AssertionError:断言异常 - 自定义异常
继承于Throwable的子类,检查型异常就需要继承Exception,运行时异常需要继承RuntimeException类。 - Error,Exception
Exception:可以是可控的或不可控的,表示人为的异常,应该在应用程序级被处理
Error:总是不可控制的,表示系统错误或者底层资源错误,应该在系统级捕获。 - 异常链:
在子类构造器中存在cause对象作为参数,这个cause表示原始异常 - try-with-resources
JDK1.7后出现的自动关闭外部资源语句。当一个外部资源的句柄实现了AutoCloseable(类似FileInputStream),就是直接简化为try{}catch(IOException e){},自带异常压制(处理时异常,结束时异常会被抑制,抛出处理时异常)和自动关闭资源 - finally 和return的执行顺序。
Finally总是先执行