61异常和异常类 Throwable类不能直接使用,在 Throwable类中定义了方法来检索与异常 相关的错误信息,并且打印显示异常发生的栈跟踪信息。它包含有两个 直接子类: Exception类和Eror类。 Eror类及其所有子类用来表示严重的运行错误,比如内存溢出,一般 无法在程序中进行恢复和处理。因此,我们不会用到它。 Exception类 及其所有子类定义了所有能够被程序恢复和处理的标准异常,在编程 中,我们要处理的异常主要是这一类。 Exception类拥有两个构造函数: public Exception();和 public Exception( String s)。其中第二个构造函 数中的字符串参数s表示对该异常的描述说明。 EXception类的所有子类又可以分成两种类别, RunT imeEXception异常 和其他异常。 RunTimeException异常表示异常产生的原因是程序中存 在错误所引起的。如数组下标越界、空对象引用,只要程序中不存在 错误,这类异常就不会产生。其他的异常不是由于程序错误引起的, 而是由于运行环境的异常、系统的不稳定等原因引起的。这一类异常 应该主动地去处理
6.1 异常和异常类 Throwable类不能直接使用,在Throwable类中定义了方法来检索与异常 相关的错误信息,并且打印显示异常发生的栈跟踪信息。它包含有两个 直接子类:Exception类和Error类。 Error类及其所有子类用来表示严重的运行错误,比如内存溢出,一般 无法在程序中进行恢复和处理。因此,我们不会用到它。Exception类 及其所有子类定义了所有能够被程序恢复和处理的标准异常,在编程 中,我们要处理的异常主要是这一类。Exception类拥有两个构造函数: public Exception();和public Exception(String s)。其中第二个构造函 数中的字符串参数s表示对该异常的描述说明。 Exception类的所有子类又可以分成两种类别,RunTimeException异常 和其他异常。RunTimeException异常表示异常产生的原因是程序中存 在错误所引起的。如数组下标越界、空对象引用,只要程序中不存在 错误,这类异常就不会产生。其他的异常不是由于程序错误引起的, 而是由于运行环境的异常、系统的不稳定等原因引起的。这一类异常 应该主动地去处理
62已检查和未检查的异常 Java语言规范将任何Eror的子类以及 RuntimeEXception的子类都称为未检查 ( unchecked)异常。而其他的异常都被称为已检查( checked)异常 在Java程序中,无论何时使用java.io包中类的输入或输出方法,我们都会使 用 throws IoException子句。如果没有在这些方法头中包括 throws子句,编译 器就将生成语法错误。但是,我们并不担心诸如被0除或者数组索引出界的情 况。如果在程序执行期间发生这些类型的错误,那程序以相应的错误消息终 止。对于这些类型的异常,我们无需在方法头中包括 throws子句。所以,在 程序中,哪些类型的异常需要在方法头中包括 throws子句呢? IOEXception是已检查异常,由于 System in read方法可能会引发 IOEXception 异常,因而抛出的是已检査异常。当编译器遇到这些方法调用时,会检查程 序是否处理 IOEXception,或通过抛出异常来报告。启用编译器检查类似 IOEXception或其他类型的已检查异常,可以帮助客户程序减少不能正确处理 的异常的数量。到目前为止,由于前面章节的程序不要求处理 IOEXception或 其他类型的已检査异常,所以程序通过抛出它们来声明检查异常
6.2 已检查和未检查的异常 Java语言规范将任何Error的子类以及RuntimeException的子类都称为未检查 (unchecked)异常。而其他的异常都被称为已检查(checked)异常。 在Java程序中,无论何时使用java.io包中类的输入或输出方法,我们都会使 用throws IOException子句。如果没有在这些方法头中包括throws子句,编译 器就将生成语法错误。但是,我们并不担心诸如被0除或者数组索引出界的情 况。如果在程序执行期间发生这些类型的错误,那程序以相应的错误消息终 止。对于这些类型的异常,我们无需在方法头中包括throws子句。所以,在 程序中,哪些类型的异常需要在方法头中包括throws子句呢? IOException是已检查异常,由于System.in.read方法可能会引发IOException 异常,因而抛出的是已检查异常。当编译器遇到这些方法调用时,会检查程 序是否处理IOException,或通过抛出异常来报告。启用编译器检查类似 IOException或其他类型的已检查异常,可以帮助客户程序减少不能正确处理 的异常的数量。到目前为止,由于前面章节的程序不要求处理IOException或 其他类型的已检查异常,所以程序通过抛出它们来声明检查异常