每天三道面试题2019-09-16

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/HardToFindName/article/details/100905528

1、error 和 exception 的区别?

Error类和Exception类的父类都是Throwable类,区别:

  1. Error类一般是指与虚拟机相关的问题,如系统崩溃,虚拟机错误,方法调用栈溢出等,这类错误导致应用的中断,程序仅靠自己是无法自己恢复和预防的,遇到这种错误,建议让程序终止。
  2. Exception类分为运行时异常和编译时异常,运行时异常如:ArithmaticException,IllegalArgumentException,编译时能够通过,但是一运行程序就会停止,程序不会处理这类的异常。而编译时异常,需要使用try{}catch(e){}对异常捕获或是通过throws将异常抛出交由他的父类处理,否则编译不会通过。

2、说说java的异常处理机制

Java对异常进行了分类,不同的异常使用不同的类进行表示,Java中所有的异常类的根类为java.lang.Throwable,Throwable又派生出两大异常类,分别为Error和Exception。
其中Error表示程序本身无法克服和恢复的一种严重问题。Exception表示程序还能够克服和进行恢复的问题,Exception又分为系统异常和普通异常。系统异常是软件本身缺陷所导致的问题,是编程人员的责任,软件使用者无法克服和恢复这种问题,但是还能够让程序继续运行下去或者让程序死亡,如数组越界异常,空指针异常和类型转换错误;普通异常是软件运行时的环境变化或是异常所导致的问题,是用户能够克服的,如磁盘空间不足,突然断网,这时不应该让程序死亡。
java为系统异常和普通异常提供了不同的解决方案,在含有普通异常的程序中必须使用try{}catch{}对异常进行捕获或者使用throws将异常抛出交由上一层进行处理,否则程序将无法编译通过,而编译器不会强制系统异常使用try{}catch或throws处理异常,其会编译通过,但是程序在运行期间将会报错。

3、写出5个你最常见的RuntimeException

  1. java.lang.NullPointerException,空指针异常
  2. java.lang.ClassNotFound,找不到相关的类
  3. java.lang.IndexOutOfBoundsException,数组越界
  4. java.lang.IllegalArgumentException,参数类型错误
  5. java.lang.NoSuchMethodException,找不到指定的方法
  6. java.lang.ClassCastException,数据类型转换错误

猜你喜欢

转载自blog.csdn.net/HardToFindName/article/details/100905528