JAVA -- Exception 类型

1、Java中的异常会被分为三种:

  1. Error: 这种异常被设计成不被捕获,因为这种异常产生于JVM自身。
  2. Runtime Exception: 运行时异常往往与环境有关,编译时无法检查,并且可能发生的情况太广泛,所以系统会去处理,程序不需要捕获。
  3. 普通异常: 常见的异常大多属于此类。

      这些java异常直接继承java.lang.Throwable的异常类

  • java.lang.Throwable
    • java.lang.Error
    • java.lang.Exception
      • java.lang.RuntimeException

      java.lang.Throwable

      java.lang.Throwable是Java中所有可以错误和异常的父类。这里设计成父类而不是接口,我想部分原因可能是在Java诞生的早期,使用类继承结构更为流行。但更重要的原因应该是由于Exception不适于设计为接口。接口重视的是实现方法,规则的描述,而Exception重视的是里面含有的信息以及类名等信息。

      java.lang.Error

      java.lang.Error发生在应用程序不应该试图捕获的情况。Java程序不需要去throw或catch此类及其子类,因为这种异常不应该由应用程序处理,并且通常属于abnormal的情况。

      java.lang.Exception

      java.lang.Exception是指Java程序应该捕获的异常。其中,java.lang.RuntimeException是其中一个特别的子类。

      java.lang.RuntimeException

      Java程序应该捕获,却可以不去捕获的一个异常。在大多数情况下,都不会去捕获他,一个重要原因是这种异常可能发生的情况太普遍,几乎每行代码都会有RuntimeException的风险,因此反而无需去捕获了。

      java异常分为可检查异常(checked exceptions)和不可检查异常(unchecked exceptions)。
      可检查异常:除了RuntimeException异常及其子类,其他都是可查异常。这种异常,java编译器会进行检查,即,当程序中出现这种异常,可以用try-catch或者throws进行处理,否则编译不会通过。
      不可检查异常:包括运行时异常及其子类和error。

2、JAVA常见异常:

1. runtimeException子类:

    1、 java.lang.ArrayIndexOutOfBoundsException
    数组索引越界异常。当对数组的索引值为负数或大于等于数组大小时抛出。
    2、java.lang.ArithmeticException
    算术条件异常。譬如:整数除零等。
    3、java.lang.NullPointerException
    空指针异常。当应用试图在要求使用对象的地方使用了null时,抛出该异常。譬如:调用null对象的实例方法、访问null对象的属性、计算null对象的长度、使用throw语句抛出null等等

   4、java.lang.NegativeArraySizeException  数组长度为负异常

   5、java.lang.ArrayStoreException 数组中包含不兼容的值抛出的异常

   6、java.lang.SecurityException 安全性异常

   7、java.lang.IllegalArgumentException 非法参数异常

 8、ClassCastException    类型转换异常类

 9、ArrayStoreException  数组中包含不兼容的值抛出的异常

 10、NumberFormatException    字符串转换为数字抛出的异常

 11、StringIndexOutOfBoundsException 字符串索引超出范围抛出的异常


2.Exception

IOException:操作输入流和输出流时可能出现的异常。

EOFException :  文件已结束异常 父类是IOException

FileNotFoundException:   文件未找到异常   父类是IOException

SQLException   操作数据库异常类

NoSuchFieldException   字段未找到异常

NoSuchMethodException   方法未找到抛出的异常

IllegalAccessException  不允许访问某类异常

InstantiationException  当应用程序试图使用Class类中的newInstance()方法创建一个类的实例,而指定的类对象无法被实例化时,抛出该异常

ClassNotFoundException     找不到  类异常。当应用试图根据字符串形式的类名构造类,而在遍历CLASSPAH之后找不到对应名称的class文件时,抛出该异常。


3、异常处理
    try-catch-finally/throws
    1)执行try,出现异常,执行catch(找到一个异常类型匹配的,其他不执行),执行finally。执行finally之后,try异常之后的不执行。
    2)执行try,出现异常,执行catch,没有匹配catch, 此异常将会抛给JVM处理,finally语句块里的语句还是会被执行,但finally语句块后的语句不会被执行。
    3)执行try,出现异常,执行catch,执行finally,如果三个块中都有return,则先执行finally,










评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值