Java的异常体系
    Throwable
    —Error
    —Exception
    — IOException等 非运行时异常(检查性异常),一定要处理,如果不处理,程序就不能编译通过
    — RuntimeException 运行时异常(非检查性异常),可以不用try-catch处理。
    这些异常一般是由程序逻辑错误引起的,程序应该从逻辑角度尽可能避免这类异常的发生

    • 除了RuntimeException及其子类以外,其他的Exception类及其子类都属于检查异常,

    当程序中可能出现这类异常,要么使用try-catch语句进行捕获,要么用throws子句抛出,
    否则编译无法通过


    对于运行时异常、错误和检查异常,Java技术所要求的异常处理方式有所不同。
    1、由于运行时异常及其子类的不可查性,为了更合理、更容易地实现应用程序,Java规定,运行时异常将由Java运行时系统自动抛出,允许应用程序忽略运行时异常。
    2、对于方法运行中可能出现的Error,当运行方法不欲捕捉时,Java允许该方法不做任何抛出声明。因为,大多数Error异常属于永远不能被允许发生的状况,也属于合理的应用程序不该捕捉的异常。
    3、对于所有的检查异常,Java规定:一个方法必须捕捉,或者声明抛出方法之外。也就是说,当一个方法选择不捕捉检查异常时,它必须声明将抛出异常。

    方法上加的throws XException 这个XException 一般是一个非运行时异常?检查性异常 这样的检查性异常,一旦用throws声明,上层方法一定要处理这个异常