• Java异常机制


    异常类(Exception)和错误类(Error)都继承自Throwable类。

    一、格式:

    五个重要关键词try,catch,finally,throw,throws

    try {  
        // 可能发生异常的代码   
    } catch (异常类型1 异常对象1){  
        // 异常处理代码
    }  
    catch (异常类型2 异常对象2){  
         //异常处理代码
    } 

    try:试试某段代码里是否含有异常。

    catch:捕获异常。后面对应异常类型和一个代码块,用于表明该catch块用于处理这种类型的代码块,可以有多个catch块。

    finally:总会被执行的代码。主要用于回收在try块里打开的物力资源(如数据库连接、网络连接和磁盘文件)。只有finally块,执行完成之后,才会回来执行try或者catch块中的return或者throw语句,如果finally中使用了return或者throw等终止方法的语句,则就不会跳回执行,直接停止。

    throw:用于抛出一个实际的异常,可以单独作为语句使用,抛出一个具体的异常对象。

    throws:用在方法签名中,用于声明该方法可能抛出的异常。

    二、抛出异常:

    1.throws抛出异常:

    如果我们定义的一个方法可能会出现异常,但没有能力去处理这个异常,这时我们可以用throws抛出异常,交给这个方法的调用者去处理(当然如果调用者也不想处理,也可以继续抛出,最终JVM会处理)。比如:汽车在运行时可能出现异常,但汽车没有自己处理的能力,它就会把异常抛给开车的人处理(方法调用者)。

    public class TestException {  
        static void pop() throws NegativeArraySizeException {  
            // 定义方法并抛出NegativeArraySizeException异常   
            int[] arr = new int[-3]; // 创建数组   
        }  
      
        public static void main(String[] args) { // 主方法   
            try { // try语句处理异常信息   
                pop(); // 调用pop()方法   
            } catch (NegativeArraySizeException e) {  
                System.out.println("pop()方法抛出的异常");// 输出异常信息   
            }  
        }  
      
    }  
    

    定义方法pop()时预测到可能会出现NegativeArraySizeException类型的异常,但它假如无力处理异常,所以就把异常抛出,谁调用它谁就处理这个异常。

    2.throw抛出异常对象:

    throw抛出的是一个具体的异常对象,程序在执行了throw之后会立即跳出语句所在的方法,因此throw后面不允许有别的语句,否则程序会在编译时出错。

    三、常见异常:
     1. runtimeException子类:

        1、 java.lang.ArrayIndexOutOfBoundsException
        数组索引越界异常。当对数组的索引值为负数或大于等于数组大小时抛出。
        2、java.lang.ArithmeticException
        算术条件异常。譬如:整数除零等。
        3、java.lang.NullPointerException
        空指针异常。当应用试图在要求使用对象的地方使用了null时,抛出该异常。譬如:调用null对象的实例方法、访问null对象的属性、计算null对象的长度、使用throw语句抛出null等等
        4、java.lang.ClassNotFoundException
        找不到类异常。当应用试图根据字符串形式的类名构造类,而在遍历CLASSPAH之后找不到对应名称的class文件时,抛出该异常。

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

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

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

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

    2.IOException

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

    EOFException   文件已结束异常

    FileNotFoundException   文件未找到异常

    3. 其他

    ClassCastException    类型转换异常类

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

    SQLException   操作数据库异常类

    NoSuchFieldException   字段未找到异常

    NoSuchMethodException   方法未找到抛出的异常

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

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

    IllegalAccessException  不允许访问某类异常

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


     

    四、异常对象包含的常用方法:

    1.       getMessage();返回该异常的详细描述字符

    2.       printStackTrace():将该异常的跟踪栈信息输出到标准错误输出。

    3.       printStackTrace(PrintStream s):将该异常的跟踪栈信息输出到指定的输出流

    4.       getStackTrace():返回该异常的跟踪栈信息。

     五、自定义异常:

  • 相关阅读:
    [C++ Primer Plus] 第4章、复合类型(二)课后习题
    [C++ Primer Plus] 第4章、复合类型(一)程序清单——指针new和delete
    opencv学习之路(28)、轮廓查找与绘制(七)——位置关系及轮廓匹配
    [c/c++] programming之路(20)、字符串(一)
    [Python]基础教程(3)、Python基础语法
    [Python]基础教程(2)、PyCharm安装及中文编码
    opencv学习之路(27)、轮廓查找与绘制(六)——外接圆、椭圆拟合、逼近多边形曲线、计算轮廓面积及长度、提取不规则轮廓
    [Python]基础教程(1)、介绍及环境搭建
    白雪公主与七个爷爷——冲刺日志(第一天)
    白雪公主与七个爷爷——凡事预则立
  • 原文地址:https://www.cnblogs.com/wangerxiansheng/p/3836401.html
Copyright © 2020-2023  润新知