错误和异常
错误按性质分为:
- 语法错
- 语义错
- 逻辑错
错误严重程度不同分为:错误和异常
- 错误:是指程序在执行过程中所遇到的硬件或操作系统的错误。
- 异常:是指在硬件和操作系统正常时,程序遇到的运行错。
Java语言的异常处理机制
抛出异常:生成异常对象并把它提交给运行系统的过程。
捕获异常:异常抛出后,运行系统从生成异常对象的代码开始,沿着方法的调用栈逐层回溯查找,直到找到包含相应异常处理的方法,并把异常对象提交给该方法为止的过程。
- 每当有运行错误发生,系统都会产生一个相应的该异常类的对象。
- 如果异常处理程序捕捉到的异常类型和这个程序能够处理的类型相同,那么这个程序就叫做合适的异常处理程序
- 如果没有找到合适的异常处理程序,运行时环境将终止程序执行。
异常处理类
在“异常”类层次上的最上层有一个单独的类Throwable(该类用来表示所有的异常情况)该类派生了两个子类java.lang.Error和java.lang.Exception。由于应用程序不处理Error类,所以一般所说的异常都是指Exception类及其子类
构造方法
1.public Exception();
2.public Exception(String s);
Execption类从父类Throwable继承的若干方法
1.public String toString()—返回描述当前Exception类信息的字符串
2.public void printStackTrace()—该方法无返回值,完成一个输出操作。
除RuntimeException外其他都是非运行异常
使用try-catch-finally语句捕获处理异常
格式如下:
try{
要检查的语句序列
}
catch(异常类名 形参对象名){
异常发生时的处理语句序列
}
finally{
一定会运行的语句序列
}
try块中代码会抛出异常 ,catch语句会捕捉异常,finally块中的程序代码一定会运行。
抛出异常
抛出异常的方法:
1.在方法体内使用throw语句抛出异常对象,格式如下:
throw 由异常产生的对象;
2.在方法头部添加throws子句表示方法将抛出异常。带有throws子句的方法表示如下:
[修饰符] 返回值类型 方法名([参数列表]) throws 异常类列表
由调用方法处理异常
如果某个方法声明抛出异常,则调用它的方法必须捕获并处理异常,否则会出现错误。
由方法抛出异常交系统处理:
可以在主方法头使用 throws 子声明抛出的异常交由系统处理
自定义异常类
1.声明一个新的异常类
2.为用户自定义的异常类定义属性和方法,或覆盖父类的属性和方法,使这些属性和方法能够体现该类所对应的错误信息。