常见异常类型
- NullPointerException 空指针异常
- ArrayIndexOutOfBoundsException 索引越界异常
- InputFormatException输入类型不匹配异常
- SQLException SQL异常
- IllegalArgumentException 非法参数异常
- NumberFormatException 类型转换异常
异常解决方法
Java内建了通用的异常,以Throwable为顶层父类。
Throwable派生出Error和Exception类。
Error:Error类以及子类的实例,代表JVM本身的错误,不能被程序员通过代码处理。
Exception:Exception以及子类,代表程序运行时发送的各种不期望发生的时间。可以被java异常处理机制使用,是异常处理的核心。
处理方法
try catch
1
2
3
4
5try{
// 程序代码
}catch(ExceptionName e1){
//Catch 块
}throw
throw 关键字作用是抛出一个异常,抛出时候是抛出一个异常类的实例化对象,在异常处理中,try语句捕获的就是一个异常对象,那么异常对象也可以自己抛出。throws
定义一个方法的时候可以用throws关键字声明。使用throws关键字声明的方法表示此方法不处理异常,而交给方法调用着进行处理。
异常的层次结构
Java通过API 中Throwable类的众多子类描述各种不同的异常。Java异常都是对象,是Throwable子类的实例。
Throwable
包含两个子类:Error(错误) 和 Exception(异常)
包含了线程创建时线程执行堆栈的快照,提供了printStackTrace()等接口用于获取堆栈跟踪数据等信息。Error
Error类及其子类: 程序中无法处理的错误, 表示运行应用程序中出现了严重的错误。
一般表示运行时JVM出现问题。 通常由Virtual MachineError 虚拟机运行错误, NoClassDefFoundError(类定义错误)。OutOfMemoryError:内存不足错误;StackOverflow: 栈溢出错误。 此类错误发生时, JVM将终止线程。Exception
程序本身可以捕获并且可以处理的异常。Exception分为两类:运行时异常和编译时异常。
运行时异常
RuntimeException类和其子类异常,如NullPointerException(空指针异常)、IndexOutOfBoundsException(下标越界异常),这些异常是不检查异常,程序可以选择捕获,也可以不处理。这些异常一般由程序逻辑错误引起。
Java编译器不会检查它, 程序中可能出现这类一场,即使没有捕获或者抛出,也会编译通过。
非运行时异常(编译异常)
除了RuntimeException之外的异常,类型上属于Exception类及其子类。程序语法角度必须进行处理的异常,如果不处理,程序不能编译通过。如IOException、SQLException等用户自定义的Exception异常,一把情况下不自定义检查异常。
可查异常和不可查的异常
可查异常(编译器要求必须处理的异常)
在一定程度上它的发生是可以预计的,一旦发生,必须采取某种方式进行处理。除了RuntimeException及其子类以外,其他的Exception类及其子类都是可查异常。这类异常的特点是编译器会检查,(非运行时异常)。当程序中可能出现这类异常,要么try-catch语句捕获它,要么用throws 子句抛出它,否则编译器不通过。不可查异常(编译器不要求强制处理的异常)
包括运行时异常(RuntimeException与其子类)和错误(Error)。
- Post title:Java常见的异常
- Post author:郭旭升
- Create time:2022-11-13 16:58:50
- Post link:2022/11/13/Java常见的异常/
- Copyright Notice:All articles in this blog are licensed under BY-NC-SA unless stating additionally.