1 异常处理
1.1 什么是异常?
对于程序执行时出现的意外情况,在Java语言中被称为异常(Exception)。
出现异常时进行的相关处理则称为异常处理。
Java语言中使用一些专门的类来描述不同的异常情况,这些专门的类称为异常类。所有异常的类组成了Java语言的异常类继承树体系。
常见的异常类:
Exception 异常继承树的根类
RuntimeException 运行时异常类
ArithmeticExcetion 算数错误异常(除数为0)
IllegalArgumentException 方法接收到非法参数异常
NullPointerException 空引用异常
ArrayIndexOutOfBoundException 数组访问越界异常
ClassNotFoundException 不能加载所需的类异常
NumberFormatException 数值转化格式异常(如字符串转float类型)
IOException I/O异常的根类
EOFException 文件结束异常
InterruptedException 线程终端异常
1.2 Java异常处理的机制
1.2.1 异常处理
异常处理时Java语言中的一种机制,是Java语法的一个特色功能,通过欠当的使用该机制,可以使得Java语言编写的项目更加稳定。
Java程序在执行过程中如果出现异常,会自动实例化异常类对象,该异常对象将被自动提交给JVM,当JVM 接收到对象时,会寻找能处理这一异常的代码,并把当前异常对象交给其处理,这一过程称为捕获异常。如果JVM找不到可以捕获异常的代码,则Java程序将异常退出。
1.2.2 捕获异常
Java中使用try和catch关键字捕获异常,格式如下:
try{
//代码块(可能出现异常的代码)
}catch(异常类型1 exception){
//对异常进行处理的代码块
}catch(异常类型2 exception){
//对异常进行处理的代码块
}catch(异常类型3 exception){
//对异常进行处理的代码块
}finally{
//无论是否有异常,始终都会被执行的代码块
}
异常如果不被捕获,就会传递到调用它的方法,如果一直不被捕获就会传递到main函数里,由JVM处理。
1.2.3 抛出异常
Java是使用throw关键字和throws关键字抛出异常,throw关键字用于代码中抛出异常,常用的格式:
throw new 异常类();
thwows用于在方法中抛出的有所异常,而他本身布捕获这些异常。这些异常将被抛给方法的调用者。调用者需要在方法中捕获异常,如果不捕获则必须在方法中使用thows继续将异常抛出,直到异常被捕获处理、
常用格式
返回值类型 方法名(方法参数) throws 异常类1异常类2.。{
//方法体
}
1.2.4 异常分类:
非受检和受检异常。
非受检异常只编译器不要去呀强制处理的,一般是程序员代码编写方式不当而导致的异常。RunimeException异常类以及他的子类都数以它的子类都属于非受检异常。
受检类异常,指编译器要求必须强制处理的问题,即程序在运行时由于外界原因编写不当的编号。
ClassNotFoundExceptiom
IOException:操作文件时发生的异常
SQLexcption:操作数据库时发生的异常
1.2.5 Java异常处理机制的特点
1、可以将异常对象在方法调用中传递,通过传递可以将异常对象传递到合适的位置再处理。使用这种机制,使得Java语言的异常处理更加灵活。
2、可以在源代码级别将正常执行的逻辑代码和异常处理的代码相分离,更加便于代码阅读和维护。
3、异常处理机制也存在一些弊端,过度使用异常处理将降低的执行效率,增加语法的复杂度。