java异常连环问
1.error和exception有什么区别
error:重大异常不需要编写代码去处理。(内存溢出)
exception 一般性错误,程序必须处理的问题。
2.final、finally、finalize的区别
(1)、final用于声明变量、方法和类的,分别表示变量值不可变,方法不可覆盖,类不可以继承
(2)、finally是异常处理中的一个关键字,表示finally{}里面的代码一定要执行
(3)、finalize是Object类的一个方法,在垃圾回收的时候会调用被回收对象的此方法。
3.常见的异常类有哪些?
NullPointerException 空指针异常
ClassNotFoundException 指定类不存在
NumberFormatException 字符串转换为数字异常
IndexOutOfBoundsException 数组下标越界异常
ClassCastException 数据类型转换异常
FileNotFoundException 文件未找到异常
IOException IO 异常
SocketException Socket 异常
4.运行时异常与一般异常有何异同?
异常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通常操作中可能遇到的异常,是一种常见运行错误。
java编译器要求方法必须声明抛出可能发生的非运行时异常,但是并不要求必须声明抛出未被捕获的运行时异常。
5.你平时在项目中是如何对异常进行处理的?
(1)尽量避免出现runtimeException 。比如对于可能出现空指针的代码。带使用对象之前一定要推断一下该对象是否为空。必要的时候对runtimeException也进行try catch处理。
(2)进行try catch处理的时候要在catch代码块中对异常信息进行记录,通过调用异常类的相关方法获取到异常的相关信息,返回到web端,给到给用户良好的用户体验。
6.try-catch-finally 中哪个部分可以省略?如果 catch 中 return 了,finally 还会执行吗?
1.try-catch-finally 其中 catch 和 finally 都可以被省略,但是不能同时省略, 也就是说有 try 的时候,必须后面跟一个 catch 或者 finally。
2.即使是 catch 中 return 了,finally 一定会执行。
7.Java如何自定义异常?
让这个类继承Exception,重写里面的方法。
8.throw 和 throws 有什么区别?
throw 表示抛出一个具体的异常对象,throws 是声明一个方法可能抛出的异常类型。
throw 使用在方法的实现中,throws 使用在方法的声明中。
throw 抛出一个异常,throws 可以一次声明多个异常。