Throwable - 异常的核心实现基类
	该类是所有错误和异常的超类。异常分为三种类型：可控异常(checked exception)、错误和运行时异常。
	链式异常(chained exception)，通过抛出一个包装异常对导致当前异常的原始异常(异常源)作出响应，用来记录这种因果信息。
	栈踪迹(stack trace)，提供当前线程的执行历史信息。当异常被抛出时，栈踪迹是有用的调试工具。

StackTraceElement
	表示一个栈踪迹元素，或可抛出对象的一个执行点。每个元素表示一个栈帧(Stack
Frame)，所有栈帧表示一个方法调用。4个组件："类全路径名+方法名"和"文件名+行号"。


Error
	错误表示发生了严重的系统问题，继承自Throwable类。一个合理的应用程序不应该试图去处理(捕获和抛出)它。
	Error及其子类被视为不可控异常。

Exception
	Exception及其子类表示发生了一个不是严重的系统问题，继承自Throwable类。一个合理的应用程序可能需要处理这些异常。
	Exception及其子类，不包括RuntimeException子类，被视为可控异常。可控异常需要在方法和构造器的throws语句中声明，只要它们可能会在方法执行时被抛出，这样可以将异常传播到上一层方法。

RuntimeException
	RuntimeException是在JVM正常操作下被抛出的这些异常的超类。
	RuntimeException及其子类是不可控异常。不可控异常并不需要在方法或构造器的throws语句中被声明，尽管这些方法执行时可能抛出这些异常。

自定义异常类
	运行时异常可参考NullPointerException源码，其他异常可参考IOException源码。