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