• Java中的异常


    一.什么是异常

       异常就是在程序的运行过程中所发生的不正常的事件,如所需文件找不到,网络连接不通或中断,算术运算出错(如被0除),数组下标越界,装载了一个不存在的类,对null的操作,类型转换异常等等。那么异常会中断正在运行的程序。

     二.异常处理

       异常处理机制就像我们对平时可能会遇到的意外情况,预先想好了一些处理办法。也就是说,在程序执行代码的时候,万一发生了什么异常,程序会按照预定的处理办法对异常进行处理,异常处理完毕后,程序继续运行。

    三.异常的分类

    01.Throwable 类是 Java 语言中所有错误或异常的超类。它有两个子类:Error和Exception。

    02.Error:

    表示仅靠程序本身无法恢复的严重错误,如内存溢出动态链接失败,虚拟机错误。应用程序不应该抛出这种类型的对象(一般是由虚拟机抛出)。假如出现这种错误,除了正确使程序退出外,在其他反面是无能为力的。比如说VirtualMachineError:当 Java 虚拟机崩溃或用尽了它继续操作所需的资源时,抛出该错误。

    03.Exception:

    有java应用程序抛出和处理的非严重错误,如所需文件找不到,网络连接不通或中断,算术运算出错(如被0除),数组下标越界,装载了一个不存在的类,对null的操作,类型转换异常等等.

    04.运行时异常:

    包括RuntimeExcption及所有子类,不要求程序非要对他做出处理。

    05.checked异常(非运行时异常):

     除了运行时异常外的其他由Exception继承来的异常类。程序必须捕获或者声明抛出这种异常,否则会出现编译错误,无法通过编译,处理方式有两种:通过try-catch在当前位置捕获并处理异常;通过throws声明抛出异常,交给上一级调用方法处理。

    四.异常的使用

     常见异常:

    01.ArrayIndexOutOfBoundsException

     int[] ints = new int[] { 1, 2, 3, 4 };
            try {
                System.out.println(ints[4]);
                System.out.println("我能执行到吗?");// 发生异常以后,后面的代码不能被执行
            } catch (ArrayIndexOutOfBoundsException e) {
                System.out.println("数组越界错误");
            }
            System.out.println("异常出现");

    运行结果: 

      数组越界错误

      异常出现

    02.ArithmeticException:算术错误

    System.out.println("请输入除数:");
        int result=input.nextInt();
        System.out.println("请输入被除数:");//这里输入0
        int result2=input.nextInt();
        try {
            int num=result/result2;
            System.out.println("结果:"+num);
        } catch (ArithmeticException e) {
            System.out.println("算术错误!");
        }

     

    如果被除数的输入为0的话,就会产生算术错误

    运行结果:

    算术错误

       我们上面列举的常见异常也非常多,我在这里就不一一来写了,希望大家自己研究一下。

    五.多重catch块

        一段代码可能会引发多种异常,这时,可以在一个catch快后面多跟几个catch快,分别处理不同的 异常,但需要注意的是排列的顺序必须是从子类到父类,最后一个一般都是Exception类,那么如果将父类异常放到前面,那么所有的异常将被捕获,后面的子类异常将得不到执行的机会。

     六.抛出异常和声明异常

    在编程过程中,我们往往会遇到这种情况,在当前环境中无法解决,比如用户传入的参数错误等。此时,就要从当前环境中抛出异常提交给上级来处理。

    在java语言中,使用throw关键字来抛出异常

    private String name="";//姓名
    //设置性别
    public void setSex(String sex)throws Exception {//声明异常使用throws关键字
        if(sex.equals("男")||sex.equals("女"))
        {
            this.sex = sex;
        }
        else
        {
            throw new Exception("性别必须是男或女");//抛出异常使用throw关键字
        }
  • 相关阅读:
    Github作为图床的一个小坑
    OVS 精确删除流表
    Mininet入门与实战 3.9参课记录
    python自定义mininet拓扑
    RYU 灭龙战 fourth day (2)
    RYU 灭龙战 fourth day (1)
    01-NLP-01-原理与基础
    人脸识别face_detection
    5-3tensorboard网络结构及运行
    10-3验证码识别+10.4测试
  • 原文地址:https://www.cnblogs.com/hyjj/p/5421467.html
Copyright © 2020-2023  润新知