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.什么是自定义异常?

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

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;
   }
}

2.自定义异常类

 //自定义异常,继承Exception
class MyException extends Exception{
   public MyException(){}
   public MyException(String message){
       System.out.println(message);
   }
}

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");
        }
    }
}

4.创建对象实现

int a=print(8,0);
System.out.println(a);
StudentMa sm=new StudentMa();
try {
    sm.print(111,123);
}catch (MyException m){
    m.fillInStackTrace();
}

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;
 }

四.小结

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

道而起

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值