• java中的异常[35]


    java中的异常[35]




    一、什么是异常?

    异常是阻止当前方法或作用域继续执行的问题,在程序中导致程序中断运行的一些指令;

    1.throwable是异常的基类,分为Error和Exception,在编程中我们关注Exception.
    2.Exception分为编译期异常(受检)和运行期异常(非受检).
    3.try{…catch(){}…finally{}}:catch可以有多个,执行顺序为子类到父类,最好把小的异常放前面,如果大的异常在前面就不会执行后面的catch了;
    4.throws关键字在方法的声明上使用,表示方法中不处理异常,而交给调用者处理.
    5.throw关键字表示在程序中手动抛出一个异常,抛出的是一个实例化异常对象.
    6.try语句不能单独存在,可以和catch,finally组成,catch语句可以有多个,finally语句只有一个.
    7.try,catch,finally代码块中的变量作用域都是独立的,不能相互访问.
    8.多个catch时,java虚拟机会去匹配一个异常类,匹配到之后就不会再去执行别的catch.

    二、语法格式

    try{//jdk1.7之后直接释放资源
        代码块
    }catch(异常类型 对象){
        异常处理操作;
    }catch(异常类型 对象){
        处理
    }....finally{
        异常统一出口,不管怎样,都会执行的代码块,在执行return之前也会默认执行.
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    三.自定义异常

    1.什么是自定义异常?

    自定义异常的实现方式是提供构造方法,异常对象本身是没有实际功能,只是一个有意义的标识.

    1.受检异常:Exception:定义方法时必须声明所有可能会抛出的Exception,在调用这个方法时,必须try捕获.在编程期检查
    2. 非受检异常:RuntimeException:在定义方法时不需要声明会抛出RuntimeException,调用时也不需要捕获.在运行期检查.

    2.代码演示

    1.学生类

    class Student{
       private int name;
       private int pwd;
       public Student(int n,int p){
           this.name=n;
           this.pwd=p;
       }
       @Override
       public String toString() {
           return "Student{" +
                   "name=" + name +
                   ", pwd=" + pwd +
                   '}';
       }
    
       public int getName() {
           return name;
       }
    
       public void setName(int name) {
           this.name = name;
       }
    
       public int getPwd() {
           return pwd;
       }
    
       public void setPwd(int pwd) {
           this.pwd = pwd;
       }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31

    2.自定义异常类

     //自定义异常,继承Exception
    class MyException extends Exception{
       public MyException(){}
       public MyException(String message){
           System.out.println(message);
       }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    3.功能类

     class StudentMa{
        public void print(int name,int pwd)throws MyException{//抛出自定义异常
            try {
                if (name!=123){
                    throw new MyException("用户名错误!");
                }else if (pwd!=123){
                    throw new MyException("密码错误!");
                }else {
                    Student s=new Student(name,pwd);
                    System.out.println(s.toString());
                }
            }catch (MyException e){
                System.out.println("错误");
            }finally {
                System.out.println("over");
            }
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    4.创建对象实现

    int a=print(8,0);
    System.out.println(a);
    StudentMa sm=new StudentMa();
    try {
        sm.print(111,123);
    }catch (MyException m){
        m.fillInStackTrace();
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    5.课外延伸

    private static int print(int a,int b){
        try {
            int c=a/b;
            return c;
        }catch (ArithmeticException | NullException e){
            System.out.println("0不能做除数");
        }finally {
            System.out.println("finally");
        }
        System.out.println("over");
        return -1;
     }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    四.小结

    本章概述了java中的异常,异常使用和自定义异常的使用,都是后面写代码必不可少的知识点,所以本章为重点
    有哪里不足或者有更好的建议,欢迎留言吐槽,有哪里不懂的小伙伴,可以私信我,我会一一答复,感谢认可,感谢支持!

  • 相关阅读:
    火法冶炼高冰镍制电池级硫酸镍除硅
    HBuilder创建uniapp默认项目导入uview(胎教)
    文本向量化
    面试官:ThreadLocal使用场景有哪些?内存泄露问题如何避免?
    Java日期查询
    背包问题(01背包,完全背包,多重背包,用二进制优化的多重背包,分组背包)
    MongoDB 的简介
    YOLO7 口罩识别实战
    torch.stack() & torch.repeat() & torch.repeat_interleave() & torch转置 详解
    java刷题day 06
  • 原文地址:https://blog.csdn.net/weixin_45539338/article/details/126798046