1、java中异常有哪些种类
在java中异常分为:编译期异常(也叫做强制性异常)CheckedException和运行时异常(非强制性异常)RuntimeException,编译期异常是必须进行显式处理的异常,如果不处理,则会编译失败,如果可以处理,则使用try...catch
,无法处理则将它抛出throw
;运行时异常是程序在运行期间可能出现的问题,不一定非要处理。
2、调用下面方法,得到的返回值是什么?
public int getNum(){
try {
int a = 1/0;
return 1;
} catch (Exception e) {
return 2;
}finally{
return 3;
}
最终的返回结果:3。代码在执行到第三行的时候会出现MathException,进入catch
代码块,碰到了return 2
,原本要返回的,但是finally
会在return
之前执行,所以在执行return 2
之前会进入finally
执行return 3
,所以最终的返回结果是3.
3、error和Exception的区别
Error类和Exception类都是Throwable的子类,它们的区别如下:
- Error一般是指和虚拟机相关的问题,比如系统崩溃、虚拟机错误、内存空间不足、方法调用栈溢出等。遇到这样的问题,是无法通过程序恢复和预防的,建议让程序停止。
- Exception表示程序可以处理的异常,可以捕获且可以恢复,遇到这样的异常,建议处理,使程序恢复运行,而不是随意终止。
4、写出5个常见的运行时异常
- NullPointerException:空指针异常,出现原因,调用了未初始化的对象或者不存在的对象。
- ClassNotFoundException:指定的类找不到,出现原因,类的名称和路径加载失败。
- NumberFormatException:字符串转换数字异常,出现原因,字符串中出现非数字的字符。
- IndexOutOfBoundsException:数组下标越界异常。
- IllegalArgumentException:方法传递参数异常。
- ClassCastException:数据类型转换异常。
- NoClassDefFoundException:未找到类定义异常
- SQLException:SQL异常,一般是操纵数据库语句时出现的问题
- InstantiationException:实例化异常
- NoSuchMethodException:未找到方法异常
5、java中实现多态的机制是什么?
靠的是**使用父类或者父接口的引用变量指向子类或者具体实现类的实例对象。**程序真正调用的方法在运行期才会动态绑定,最终执行的不是引用所在类的方法,而是实例对象所在类的方法。