1.简述什么是异常、异常的继承体系?
Java代码在运行时期发生的问题就是异常。
异常的继承体系:
Throwable: 它是所有错误与异常的超类(祖宗类)
|- Error 错误
|- Exception 编译期异常,进行编译JAVA程序时出现的问题
|- RuntimeException 运行期异常, JAVA程序运行过程中出现的问题
2.简述异常的处理方式?
异常的处理方式:
a:JVM的默认处理方式
把异常的名称,原因,位置等信息输出在控制台,同时会结束程序。
一旦有异常发生,其后来的代码不能继续执行。
b:解决程序中异常的手动方式
a):编写处理代码 try...catch...finally
b):抛出 throws
3.throw和throws关键字的使用位置和格式?
throw:
使用位置:方法内部
使用格式:throw new 异常类名(参数);
throws:
使用位置:方法声明上
使用格式:修饰符 返回值类型 方法名(参数) throws 异常类名1,异常类名2… { }
4.多个catch处理的注意事项?
有顺序:
平级异常:抛出的异常类之间,没有继承关系,没有顺序
上下级关系的异常:越高级的父类,越写在下面
5.简述finally关键字的特点和作用?
* A: finally的特点
* 被finally控制的语句体一定会执行
* B:finally的作用
* finally,无论程序是否有异常出现,程序必须执行释放资源。
如:IO流操作和数据库操作中会见到
6.Throwable类的常见方法及方法描述?
a:getMessage()方法
返回该异常的详细信息字符串,即异常提示信息
b:toString()方法
返回该异常的名称与详细信息字符串
c:printStackTrace()方法
在控制台输出该异常的名称与详细信息字符串、异常出现的代码位置
7.自定义异常的格式?
class 异常名 extends Exception{ //或继承RuntimeException
public 异常名(){
}
public 异常名(String s){
super(s);
}
}
面试题:
1、 throw 和throws 的区别是什么
throw
定义在方法中,后边跟的是异常对象
同时只能抛出一个异常对象
throws
定义在方法的声明上,后边跟的是异常的类型
后边同时可以跟多个数据类型
2、 finally 返回路径面试题
finally :在正常情况下,肯定执行的代码
在try中return,在finally中修改:
//返回路径:每次碰到return就会在返回路径中临时存储这个被返回的值,无论方法内有任何的改变,返回路径中的这个值一致不变。
/** * 返回路径:每次碰到return就会在返回路径中临时存储这个被返回的值, * 无论方法内有任何的改变,返回路径中的这个值一直不变。 * @author vanguard * */ public class Demo01 { public static void main(String[] args) { System.out.println(method()); } public static int method() { int i = 0; try { System.out.println(1/0); return i; } catch (Exception e) { e.printStackTrace(); } finally { i = 200; System.out.println("我一定会运行"); } return i; } }
运行结果是
200