最新网站开发需求文档,网站建设的用户体验,网络整合营销案例,网站关键词优化外包1.错误代码、报错如下#xff1a; 2.当try catch中报错时 影响主程序启动 寻找半天才发现是忽略了报错中的Error信息 经过查找发现Exception#xff08;异常#xff09;和 Error#xff08;错误#xff09;是Throwable两个重要的子类#xff0c;且两者都包含大量子类 2.当try catch中报错时 影响主程序启动 寻找半天才发现是忽略了报错中的Error信息 经过查找发现Exception异常和 Error错误是Throwable两个重要的子类且两者都包含大量子类 所以当程序报Error错误信息时 Exception是捕捉不到的 两者是输入平行关系的 主要关系图如下 3.Error错误是程序无法处理的错误表示运行应用程序中较严重问题。大多数错误与代码编写者执行的操作无关而表示代码运行时 JVMJava 虚拟机出现的问题。例如Java虚拟机运行错误Virtual MachineError当 JVM 不再有继续执行操作所需的内存资源时将出现 OutOfMemoryError。这些异常发生时Java虚拟机JVM一般会选择线程终止。这些错误表示故障发生于虚拟机自身、或者发生在虚拟机试图执行应用时如Java虚拟机运行错误Virtual MachineError、类定义错误NoClassDefFoundError等。这些错误是不可查的因为它们在应用程序的控制和处理能力之 外而且绝大多数是程序运行时不允许出现的状况。对于设计合理的应用程序来说即使确实发生了错误本质上也不应该试图去处理它所引起的异常状况。在 Java中错误通过Error的子类描述
4.Exception异常是程序本身可以处理的异常。Exception 类有一个重要的子类 RuntimeException。RuntimeException 类及其子类表示“JVM 常用操作”引发的错误。例如若试图使用空值对象引用、除数为零或数组越界则分别引发运行时异常NullPointerException、ArithmeticException和 ArrayIndexOutOfBoundException。
5.两者的区别异常能被程序本身可以处理错误是无法处理。通常Java的异常(包括Exception和Error)分为可查的异常checked exceptions和不可查的异常unchecked exceptions。 可查异常编译器要求必须处置的异常正确的程序在运行中很容易出现的、情理可容的异常状况。可查异常虽然是异常状况但在一定程度上它的发生是可以预计的而且一旦发生这种异常状况就必须采取某种方式进行处理。 除了RuntimeException及其子类以外其他的Exception类及其子类都属于可查异常。这种异常的特点是Java编译器会检查它也就是说当程序中可能出现这类异常要么用try-catch语句捕获它要么用throws子句声明抛出它否则编译不会通过
不可查异常(编译器不要求强制处置的异常):包括运行时异常RuntimeException与其子类和错误Error。 Exception 这种异常分两大类运行时异常和非运行时异常(编译异常)。程序中应当尽可能去处理这些异常。 运行时异常都是RuntimeException类及其子类异常如NullPointerException(空指针异常)、IndexOutOfBoundsException(下标越界异常)等这些异常是不检查异常程序中可以选择捕获处理也可以不处理。这些异常一般是由程序逻辑错误引起的程序应该从逻辑角度尽可能避免这类异常的发生。 运行时异常的特点是Java编译器不会检查它也就是说当程序中可能出现这类异常即使没有用try-catch语句捕获它也没有用throws子句声明抛出它也会编译通过。 非运行时异常 编译异常是RuntimeException以外的异常类型上都属于Exception类及其子类。从程序语法角度讲是必须进行处理的异常如果不处理程序就不能编译通过。如IOException、SQLException等以及用户自定义的Exception异常一般情况下不自定义检查异常。
6.处理异常机制 在 Java 应用程序中异常处理机制为抛出异常捕捉异常。 抛出异常当一个方法出现错误引发异常时方法创建异常对象并交付运行时系统异常对象中包含了异常类型和异常出现时的程序状态等异常信息。运行时系统负责寻找处置异常的代码并执行。 捕获异常在方法抛出异常之后运行时系统将转为寻找合适的异常处理器exception handler。潜在的异常处理器是异常发生时依次存留在调用栈中的方法的集合。当异常处理器所能处理的异常类型与方法抛出的异常类型相符时即为合适 的异常处理器。运行时系统从发生异常的方法开始依次回查调用栈中的方法直至找到含有合适异常处理器的方法并执行。当运行时系统遍历调用栈而未找到合适 的异常处理器则运行时系统终止。同时意味着Java程序的终止。 对于运行时异常、错误或可查异常Java技术所要求的异常处理方式有所不同。 由于运行时异常的不可查性为了更合理、更容易地实现应用程序Java规定运行时异常将由Java运行时系统自动抛出允许应用程序忽略运行时异常。 对于方法运行中可能出现的Error当运行方法不欲捕捉时Java允许该方法不做任何抛出声明。因为大多数Error异常属于永远不能被允许发生的状况也属于合理的应用程序不该捕捉的异常。 对于所有的可查异常Java规定一个方法必须捕捉或者声明抛出方法之外。也就是说当一个方法选择不捕捉可查异常时它必须声明将抛出异常。 能够捕捉异常的方法需要提供相符类型的异常处理器。所捕捉的异常可能是由于自身语句所引发并抛出的异常也可能是由某个调用的方法或者Java运行时 系统等抛出的异常。也就是说一个方法所能捕捉的异常一定是Java代码在某处所抛出的异常。简单地说异常总是先被抛出后被捕捉的。 任何Java代码都可以抛出异常如自己编写的代码、来自Java开发环境包中代码或者Java运行时系统。无论是谁都可以通过Java的throw语句抛出异常。 从方法中抛出的任何异常都必须使用throws子句。 捕捉异常通过try-catch语句或者try-catch-finally语句实现。 总体来说Java规定对于可查异常必须捕捉、或者声明抛出。允许忽略不可查的RuntimeException和Error。