java基础--异常

152 阅读1分钟

1 Error和Exception的区别

  • Error类和Exception类的父类都是Throwable类
  1. Error类:一般指与虚拟机相关的问题,如:系统奔溃,虚拟机错误,内存空间不足,方法调用栈溢出等。这类错误将会导致应用程序中断,仅靠程序本身无法恢复和预防
  2. Exception:分为运行时异常和受检查异常

2 运行时异常和受检异常有什么区别

  1. 运行时异常:如:空指针异常,指定类找不到,数组下标越界,方法传递参数错误,数据类型转换错误。可以编译通过,但是一运行就停止了,程序不会自己处理
  2. 受检异常:要么用try-catch捕获,要么用throws声明抛出,交给父类处理

3 throw和throws的区别

  1. throw:在方法体内部,表示抛出异常,由方法体内部的语句处理:throw时具体向外抛出异常的动作,所以它抛出的是一个异常实例
  2. throws:在方法声明后,表示如果抛出异常,由该方法的调用者来进行异常的处理;表示出现异常的可能性,并不一定会发生这种异常

4 常见异常类有哪些

  1. NullPointerException:
  2. SQLException:
  3. IOException:
  4. FileNotFountException:

5 主线程可以捕获到子线程的异常吗

  1. 线程设计理念:线程的问题应该线程自己本身解决,而不要委托到外部
  2. 正常情况下,如果不做特殊的处理,在主线程中时不能够捕获到子线程中的异常的。如果想要在主线程中捕获子线程的异常,我们可以使用以下方式进行,使用Thread的静态方法
Thread.setDefaultUncaughtExceptionHandler(new MyUncaughtExceptionHandle());