Java面试题6 异常
自己尝试通过打字来回答一些网上常见的面试题,答案仅代表我自己的观点
74. throw 和 throws 的区别?
throw
用于抛出一个异常,throws
用于在方法签名上声明该方法可能抛出的异常,代表向外界宣称我要执行的工作可能抛出这种异常,但我并不知道如何处理,就交给调用者处理吧。
75. final、finally、finalize 有什么区别?
???你不问我真不知道它们有关系。。。憨批问题吗???
final
用于声明一个类、方法、属性是最终的,被它修饰的类、方法、和属性无法被二次修改finally
是异常控制流中的一块,其中是无论是否发生了异常都会执行的逻辑。finalize
是Java中一个已经废弃的方法,它是Object类的一个方法,JVM会在对象将要被GC回收时调用该方法,你可以在该方法中执行一些清理操作或者将该对象重新与引用链相连来“营救”该对象。JVM并不保证finalize
方法的完整执行,所以不推荐使用它来清理数据。
76. try-catch-finally 中哪个部分可以省略?
可以省略catch
,只用try-finally
,也可以省略finally
、只用try-catch
。不能同时省略。
77. try-catch-finally 中,如果 catch 中 return 了,finally 还会执行吗?
不管是否return
,在try
还是catch
中return
,finally
都会正常执行,并且return
语句会延后在finally
执行完毕后执行。
78. 常见的异常类有哪些?
- IOException: IO异常
- IllegalArgumentException: 非法参数异常
- ArrayIndexOutOfBoundsException: 数组下标越界异常
- NullPointerException: 空指针异常