国家建设部官方网站赵宏彦,给公司做门户网站多少钱,品牌网络授权书,设计公司推广渠道1.异常概念 Java标准库内建了一些通用的异常#xff0c;这些类以Throwable为顶层父类。Throwable又派生出Error类和Exception类。
1.错误#xff1a;是程序无法处理的错误#xff0c;表示运行应用程序中较严重问题。大多数错误与代码编写者执行的操作无关#xff0c;而表示…1.异常概念 Java标准库内建了一些通用的异常这些类以Throwable为顶层父类。Throwable又派生出Error类和Exception类。
1.错误是程序无法处理的错误表示运行应用程序中较严重问题。大多数错误与代码编写者执行的操作无关而表示代码运行时 JVMJava 虚拟机出现的问题。
例如Java 虚拟机运行错误Virtual MachineError当JVM 不再有继续执行操作所需的内存资源时将出现 OutOfMemoryError。这些异常发生时Java 虚拟机JVM一般会选择线程终止。
2.异常Exception以及他的子类代表程序运行时发送的各种不期望发生的事件。可以被Java异常处理机制使用是异常处理的核心.。
例如数据库连接中断空指针数组下标越界。
注意异常和错误的区别异常能被程序本身可以处理错误是无法处理。
2.异常分类 总体上我们根据 Javac 对异常的处理要求将异常类分为二类。
1.非检查异常 unckecked exception Error 和 RuntimeException 以及他们的子类。 javac 在编译时不会提示和发现这样的异常不要求在程序处理这些异常。
所以如果愿意我们可以编写代码处理使用 try…catch…finally 这样的异常也可以不处理。对于这些异常我们应该修正代码而不是去通过异常处理器处理 。
这样的异常发生的原因多半是代码写的有问题。如除0错误 ArithmeticException 错误的强制类型转换错误 ClassCastException 数组索引越界 ArrayIndexOutOfBoundsException 使用了空对象NullPointerException 等等。
2.检查异常 checked exception 除了 Error 和 RuntimeException 的其它异常。 javac 强制要求程序员为这样的异常做预备处理工作使用 try…catch…finally 或者 throws 。在方法中要么用 try-catch 语句捕获它并处理要么用throws子句声明抛出它否则编译不会通过。
这样的异常一般是由程序的运行环境导致的。因为程序可能被运行在各种未知的环境下而程序员无法干预用户如何使用他编写的程序于是程序员就应该为这样的异常时刻准备着。如 SQLException , IOException , ClassNotFoundException 等。
需要明确的是检查和非检查是对于 javac 来说的这样就很好理解和区分了。
3.异常处理
1.通过try…catch语句块来处理
2.在具体位置不处理直接抛出通过throws/throw到上层再进行处理
Throw和throws的区别1.throws 用在函数上后面跟的是异常类可以跟多个而 throw 用在函数内后面跟的 是异常对象
2.throws用来声明异常让调用者只知道该功能可能出现的问题可以给出预先的处理方式
3.throw抛出具体的问题对象执行到throw功能就已经结束了跳转到调用者并讲具体的问题对象抛给调用者。
4.throws表示出现异常的一种可能性并不一定会发生这些异常throw则是抛出了异常执行throw则一定抛出了某种异常对象。
5.两者都是消极处理异常的方式只是抛出或者可能抛出异常但是不会由函数去处理异常真正的处理异常由函数的上层调用处理。