• 1.7 JAVA异常总结


    1.7 JAVA异常总结

    异常有的是因为用户错误引起,有的是程序错误引起的,还有其它一些是因为物理错误引起的。

    三种异常:分别为检查性异常(一般异常)、运行时异常(非检查性异常)、错误

    Throwable 子类是Error错误类和Exception 异常类、

    Exception 子类是IOException 类和 RuntimeException 类。所有的异常类是从 java.lang.Exception 类继承的子类。

    详细框架如下图所示。

     

    一、Error 错误用来指  示运行时环境发生的错误。

    JVM 内存溢出。一般地,程序不会从错误中恢复。

    二、 Java 的非检查性异常(运行时异常

    错误和非检查异常不可查,通常为JVM异常或错误。

    异常描述
    ArithmeticException 当出现异常的运算条件时,抛出此异常。例如,一个整数"除以零"时,抛出此类的一个实例。
    ArrayIndexOutOfBoundsException 用非法索引访问数组时抛出的异常。如果索引为负或大于等于数组大小,则该索引为非法索引。
    ArrayStoreException 试图将错误类型的对象存储到一个对象数组时抛出的异常。
    ClassCastException 当试图将对象强制转换为不是实例的子类时,抛出该异常。(父类转子类时的类转换异常)
    IllegalArgumentException 抛出的异常表明向方法传递了一个不合法或不正确的参数。
    IllegalMonitorStateException 抛出的异常表明某一线程已经试图等待对象的监视器,或者试图通知其他正在等待对象的监视器而本身没有指定监视器的线程。
    IllegalStateException 在非法或不适当的时间调用方法时产生的信号。换句话说,即 Java 环境或 Java 应用程序没有处于请求操作所要求的适当状态下。
    IllegalThreadStateException 线程没有处于请求操作所要求的适当状态时抛出的异常。
    IndexOutOfBoundsException 指示某排序索引(例如对数组、字符串或向量的排序)超出范围时抛出。(数组越界)
    NegativeArraySizeException 如果应用程序试图创建大小为负的数组,则抛出该异常。
    NullPointerException 当应用程序试图在需要对象的地方使用 null 时,抛出该异常(空指针异常)
    NumberFormatException 当应用程序试图将字符串转换成一种数值类型,但该字符串不能转换为适当格式时,抛出该异常。(ParseException,解析异常)
    SecurityException 由安全管理器抛出的异常,指示存在安全侵犯。
    StringIndexOutOfBoundsException 此异常由 String 方法抛出,指示索引或者为负,或者超出字符串的大小。
    UnsupportedOperationException 当不支持请求的操作时,抛出该异常。

    三、Java 定义在 java.lang 包中的检查性异常(一般异常)类。

    这部分异常可查,为程序异常在程序中必须被捕获操作

    异常描述
    ClassNotFoundException 应用程序试图加载类时,找不到相应的类,抛出该异常。(FileNotFindException,没找到文件)
    CloneNotSupportedException 当调用 Object 类中的 clone 方法克隆对象,但该对象的类无法实现 Cloneable 接口时,抛出该异常。
    IllegalAccessException 拒绝访问一个类的时候,抛出该异常。
    InstantiationException 当试图使用 Class 类中的 newInstance 方法创建一个类的实例,而指定的类对象因为是一个接口或是一个抽象类而无法实例化时,抛出该异常。
    InterruptedException 一个线程被另一个线程中断,抛出该异常。
    NoSuchFieldException 请求的变量不存在
    NoSuchMethodException 请求的方法不存在

    异常常用方法大体有:1.getMessage()返回关于发生的异常的详细信息、

    2.getMessage()返回关于发生的异常的详细信息

    3.toString()使用getMessage()的结果返回类的串级名字。

    4.printStackTrace()打印toString()结果和栈层次到System.err,即错误输出流。

    四、捕获异常

    4.1 使用 try 和 catch 关键字可以捕获异常。try/catch 代码块放在异常可能发生的地方。

    多重try/catch

    try {
        file = new FileInputStream(fileName);
        x = (byte) file.read();
    } catch(FileNotFoundException f) { // Not valid!
        f.printStackTrace();
        return -1;
    } catch(IOException i) {
        i.printStackTrace();
        return -1;
    }

    4.2 throws捕获异常

    如果一个方法没有捕获到一个检查性异常,那么该方法必须使用 throws 关键字来声明。throws 关键字放在方法签名的尾部。

    4.3 finally 关键字

    finally 关键字用来创建在 try 代码块后面执行的代码块。

    无论是否发生异常,finally 代码块中的代码总会被执行。

    在 finally 代码块中,可以运行清理类型等收尾善后性质的语句。

    finally 代码块出现在 catch 代码块最后,语法如下:

  • 相关阅读:
    this直接加在函数或者是 “原型”对象的区别
    网易云课堂_C语言程序设计进阶_第一周:数据类型:整数类型、浮点类型、枚举类型_1计算分数精确值
    #include <stdbool.h>
    网易云课堂_C语言程序设计进阶_第一周:数据类型:整数类型、浮点类型、枚举类型
    #include <locale.h> #include <locale>
    C语言复习
    Apache HTTP Server
    深拷贝_浅拷贝
    04737_C++程序设计_第4章_类和对象
    经典算法_链表
  • 原文地址:https://www.cnblogs.com/Smileing/p/11600960.html
Copyright © 2020-2023  润新知