一)Java错误异常的分类
如图,java中Throwable类的子类层次结构也就是java中错误异常分类的策略。首先是将错误异常细分为错误(Error)和异常(Exception)两大类。
错误指的是一个合理的应用程序不能截获的严重的问题。大多数都是反常的情况,比如内存溢出。而异常则是指由于java的语法错误和语义错误而引起的程序异常,它基本是可以通过修改或优化你的代码来改正的。
对于异常,我们还进一步细分为checked exception和unchecked exception(runtime exception)。 其中checked exception表示的是程序编译前就应该检查并避免出现的由语法错误而引起的异常,所以Java程序必须显示处理Checked异常。如果程序没有处理Checked异常,该程序在编译时就会发生错误无法编译。如果使用IDE工具编写java的话,一旦出现checked exception,工具都会有相应的红色提示,所以只要使用IDE工具的话这类异常我们基本都能避免。而runtime exception顾名思义是程序在运行过程中发生的异常,由系统自动检测并将它们交给缺省的异常处理程序。当然如果你有处理要求也可以显示捕获它们。
二)错误 Error
Error类体系描述了Java运行系统中的内部错误以及资源耗尽的情形。应用程序不应该抛出这种类型的对象(一般是由虚拟机抛出)。如果出现这种错误,除了尽力使程序安全退出外,在其他方面是无能为力的。所以,在进行程序设计时,应该更关注Exception体系。
说白了,Error不是我们java程序员所需要担心的东西,它不是我们改写代码就能避免的。或者说这些错误都是程序以外的外部因素引起的。比如:OutOfMemoryError(内存溢出),VirtualMachineError(虚拟机down了或资源不足了)等等。
显然,类似这类错误的出现作为一个编写java代码的能咋办呢?应该是一个比较好的理由叫老板给咋加条内存吧 ^.^
三)异常 Exception
1)checked exception:
它又可称为编译异常。顾名思义,它基本是在编译阶段出现的那些异常。比如:ClassNotFoundException(未找到类),NoSuchMethodException(无此方法)等等。如果我们使用IDE编程,这些异常应该都会红色高显提示,我们基本都直接可以避免,而不必在编辑java文件时才发现它抛出此类异常了。
2)runtime exception
运行异常,运行时抛出的异常。那程序怎么会在运行时抛出异常呢?ArrayIndexOutOfBoundsException(数组下标越界),ArithmeticException(算术条件异常。譬如:整数除零等),NullPointerException(空指针异常)等等。遇到这类异常,可能就需要我们程序员非一些思量了。是由系统自动检测并将它们交给缺省的异常处理程序还是显示捕获它们,这将是需求环境情况而定,不可一概而论。
四)总结
java的错误异常机制中,分为错误和异常两类,而异常又进一步分为编译异常和运行异常。对于错误,我们无能为力。对编译异常,一般使用IDE工具就能避免。关键在于运行异常的处理,强壮严密的代码可以减少运行异常出现的机会。而对于抛出的运行异常,我们需要做个决定:是任其抛出还是捕获处理...嗯,这确实是个问题!

如图,java中Throwable类的子类层次结构也就是java中错误异常分类的策略。首先是将错误异常细分为错误(Error)和异常(Exception)两大类。
错误指的是一个合理的应用程序不能截获的严重的问题。大多数都是反常的情况,比如内存溢出。而异常则是指由于java的语法错误和语义错误而引起的程序异常,它基本是可以通过修改或优化你的代码来改正的。
对于异常,我们还进一步细分为checked exception和unchecked exception(runtime exception)。 其中checked exception表示的是程序编译前就应该检查并避免出现的由语法错误而引起的异常,所以Java程序必须显示处理Checked异常。如果程序没有处理Checked异常,该程序在编译时就会发生错误无法编译。如果使用IDE工具编写java的话,一旦出现checked exception,工具都会有相应的红色提示,所以只要使用IDE工具的话这类异常我们基本都能避免。而runtime exception顾名思义是程序在运行过程中发生的异常,由系统自动检测并将它们交给缺省的异常处理程序。当然如果你有处理要求也可以显示捕获它们。
二)错误 Error
Error类体系描述了Java运行系统中的内部错误以及资源耗尽的情形。应用程序不应该抛出这种类型的对象(一般是由虚拟机抛出)。如果出现这种错误,除了尽力使程序安全退出外,在其他方面是无能为力的。所以,在进行程序设计时,应该更关注Exception体系。
说白了,Error不是我们java程序员所需要担心的东西,它不是我们改写代码就能避免的。或者说这些错误都是程序以外的外部因素引起的。比如:OutOfMemoryError(内存溢出),VirtualMachineError(虚拟机down了或资源不足了)等等。
显然,类似这类错误的出现作为一个编写java代码的能咋办呢?应该是一个比较好的理由叫老板给咋加条内存吧 ^.^
三)异常 Exception
1)checked exception:
它又可称为编译异常。顾名思义,它基本是在编译阶段出现的那些异常。比如:ClassNotFoundException(未找到类),NoSuchMethodException(无此方法)等等。如果我们使用IDE编程,这些异常应该都会红色高显提示,我们基本都直接可以避免,而不必在编辑java文件时才发现它抛出此类异常了。
2)runtime exception
运行异常,运行时抛出的异常。那程序怎么会在运行时抛出异常呢?ArrayIndexOutOfBoundsException(数组下标越界),ArithmeticException(算术条件异常。譬如:整数除零等),NullPointerException(空指针异常)等等。遇到这类异常,可能就需要我们程序员非一些思量了。是由系统自动检测并将它们交给缺省的异常处理程序还是显示捕获它们,这将是需求环境情况而定,不可一概而论。
四)总结
java的错误异常机制中,分为错误和异常两类,而异常又进一步分为编译异常和运行异常。对于错误,我们无能为力。对编译异常,一般使用IDE工具就能避免。关键在于运行异常的处理,强壮严密的代码可以减少运行异常出现的机会。而对于抛出的运行异常,我们需要做个决定:是任其抛出还是捕获处理...嗯,这确实是个问题!