java 异常 面试

1 thro 和 throws 的区别?

throw 是一个关键字,用于抛出异常对象。它通常在方法内部使用,表示方法执行时发生了异常情况,需要将异常信息传递给调用者处理。
throws 是一个关键字,用于声明方法可能会抛出的异常类型。它放在方法签名中的异常声明部分,用于告诉调用者该方法可能会抛出哪些异常类型。

2 final、finally、finalize 有什么区别?
final 是一个关键字,用于修饰类、方法和变量。当修饰类时,表示该类不能被继承;当修饰方法时,表示该方法不能被重写;当修饰变量时,表示该变量为常量,不可被改变。
finally 是一个关键字,用于定义在try-catch语句块中,无论是否发生异常,finally块中的代码都会被执行。通常用于做一些清理工作,如关闭文件、释放资源等。
finalize 是一个Object类中的方法,用于在垃圾回收器回收对象之前执行一些操作。它是Java语言提供的最后一道保障,用于释放对象占用的系统资源。

3 try-catch-finally 中哪个部分可以省略?
try-catch-finally 中可以省略 catch 或 finally 块,但不能同时都省略。如果省略 catch 块,则必须在方法签名中声明方法可能会抛出的异常类型,或者使用 throws 关键字抛出异常;如果省略 finally 块,则在 try 或 catch 块中打开的资源可能无法正确释放。


4 try-catch-finally 中,如果 catch 中 return 了,finally 还会执行吗?
如果在 catch 块中执行了 return 语句,finally 块仍然会被执行。finally 块中的代码总是在 try-catch 块结束后执行,无论是否发生异常,因此即使在 catch 块中执行了 return 语句,finally 块中的代码也会被执行。

5 常见的异常类有哪些?
RuntimeException:运行时异常,通常由程序逻辑错误引起,如空指针、数组越界等。
IOException:输入输出异常,通常由文件读写、网络通信等操作引起。
SQLException:SQL异常,通常由数据库操作引起。
ClassNotFoundException:类未找到异常,通常由类加载器无法找到指定类引起。
InterruptedException:线程中断异常,通常由Thread.interrupt()方法调用引起。
NullPointerException:空指针异常,通常由对null对象进行操作引起。
ArrayIndexOutOfBoundsException:数组越界异常,通常由访问不存在的数组元素引起。
ClassCastException:类型转换异常,通常由强制类型转换失败引起。
IllegalArgumentException:非法参数异常,通常由方法传入非法参数引起。

你可能感兴趣的:(JAVA面试题,java,面试,开发语言)