Exception异常 和 RuntimeException异常

1、什么是异常:

  程序开发和运行过程中会出现编译错误和运行错误。编译错误容易被发现并排除,而运行错误(逻辑错误和异常)很难预料。因此为了程序的稳定性和可靠性,就需要对程序异常处理和保护。
  异常( Exception )正常程序流程所不能处理或者没有处理的异常情况或异常事件
 
2、异常的分类:
  1):根据异常在编译时是否被检测来分,异常可以分为两类:受检异常(CheckedException)非受检异常(UncheckedException)
  2):非受检异常不能在编译时检测到。非受检异常包括运行时异常(RuntimeException)错误(Error)
      错误指的是致命性错误,常常无法处理。
  3):根据异常的严重性,可以分为可以处理的异常错误异常
      异常以类的形式封装。程序可以处理的异常对应的类是java.lang.Exception及其子类。
      运行时异对应的类是java.lang.RuntimeException
      错误异常对应的类是java.lang.Error
 
3、异常相关类的继承关系:
java.lang.Object
  |
  +——java.lang.Throwable
      |
      +——java.lang.Error
      |
      +——java.lang.Exception
          |
          +——java.io.IOException
          |
          +——java.lang.RuntimeException
              |
              +——java.lang.ArithmeticException
              |
              +——java.lang.ArrayIndexOutOfBoundsException
              |
              +——java.lang.IllegalArgumentException
              |
              +——java.lang.NumberFormatException

 

 4、异常的产生:

  •  可以由Java虚拟机在执行程序时自动发现并产生异常。
  •  也可以在程序中显式地生成异常,这种方法称为抛出异常(ThrowExceptions)

5、Exception异常 和 RuntimeException异常两者的区别是:

  • Exception :受检查的异常(编译错误),这种异常是强制我们catch或throw的异常。你遇到这种异常必须进行catch或throw,如果不处理,编译器会报错。比如:IOException

  • RuntimeException:运行时异常(运行错误),这种异常我们不需要处理,完全由虚拟机接管。比如我们常见的NullPointerException,我们在写程序时不会进行catch或throw。

RuntimeException也是继承自Exception的,只是虚拟机对这两种异常进行了区分。
 
6、常见的几种RuntimeException异常:
 

  NullPointerException - 空指针引用异常

  ClassCastException - 类型强制转换异常。

  IllegalArgumentException - 传递非法参数异常。

  ArithmeticException - 算术运算异常

  ArrayStoreException - 向数组中存放与声明类型不兼容对象异常

  IndexOutOfBoundsException - 下标越界异常

  NegativeArraySizeException - 创建一个大小为负数的数组错误异常

  NumberFormatException - 数字格式异常

  SecurityException - 安全异常

  UnsupportedOperationException - 不支持的操作异常

 

  SQLException - 操作数据库异常

  IOException - 输入输出异常

 
 
posted @ 2020-04-16 22:06  凉年技术  阅读(1114)  评论(0)    收藏  举报