异常学习总结

 

1.异常的概述

  对Java来说,异常就是一个类,产生了一个异常,就是产生了一个类的对象,这个类代表不正常的现象

  整个异常体系 :重要
  Throwable(生病)
     Error (不可治愈的疾病)      错误:宕机,断点,海啸
     Exception (能治愈的疾病)      : 异常,程序员能处理
         非RuntimeExcetion   非运行时期异常,编译器异常,要求我们在编译器就必须进行处理
           RuntimeException(运行时期异常 )

2.异常的注意事项:

 异常的注意事项: 
      1.如果对发生的异常一直不处理,程序不再继续执行
      2.如果对发生的异常进行try,catch,此時發生了異常,try下的代碼不會執行,此異常會被catch捕獲,同时程序继续执行

3.异常处理的第一种方式:

 第一种方式:捕获异常(分为单异常捕获,和多异常捕获)
 使用规则:异常捕获
 try{
 // 可能产生异常的代码
 }catch(Exception e){
 // 如果产生异常,进行处理
 }
 Java处理异常的机制:如果不处理异异常,则代码停止执行,并且将异常直接抛给JVM。

 使用规则:多异常捕获
 try{
 // 可能发生异常的代码
 }catch(异常类型  | 异常类型 e2){
  //如果产生异常,进行的处理
  // e.printStackTrace() 打印 针对于程序员的public class Demo01 {

public static void main(String[] args) {
        Test t  = new Test();
        int method = t.method();
        System.out.println(method);
}

} class Test{ public int method(){ int i = 0; try{ System.out.println(1/0); return i; }catch(Exception e){ e.printStackTrace(); }finally{ i = 200; System.out.println("我一定会运行"); } return i; } //返回路径:每次碰到return就会在返回路径中临时存储这个被返回的值,无论方法内有任何的改变,返回路径中的这个值一致不变。 } //异常名字,异常描述,异常发生在哪儿 } 问题为什么要分开捕获 注意:该异常处理,只能是针对同级异常

4.异常处理的第二种方式

 使用规则:抛出异常,在方法后边加上throws
 两个问题:
      如果不处理异常,那么异常最终会到哪儿
      如果拋出了异常,谁处理。

5.自定义异常

 使用规则: extends RuntimeException
           4个构造方法

 1.创建自定义异常 -->extends 
                  RuntimeException
                非RuntimeException
                需要实现父类的构造方法(传入自己的异常信息)
 throw  进行抛出,并且进型处理

6.子父类异常注意事项:

   运行异常的特点:
     父类的方法,如果抛出异常,子类重写后可以不抛出异常也可以抛出异常,但是,如果子类要抛,抛出的异常不能大于父类的异常大于,都指的是继承关系

     父类的方法,没有异常抛出,子类重写后也不能抛出异常,如果子类中调用了抛出异常的方法,别无选择,只能try..catch处理意义

面试题

1、 throw 和throws 的区别是什么
      throw 
        定义在方法中,后边跟的是异常对象
        同时只能抛出一个异常对象

      throws 
         定义在方法的声明上,后边跟的是异常的类型
         后边同时可以跟多个数据类型


2、 finally 返回路劲面试题
     2. finally :在正常情况下,肯定执行的代码
     在try中return,在finally中修改:
     //返回路径:每次碰到return就会在返回路径中临时存储这个被返回的值,无论方法内有任何的改变,返回路径中的这个值一致不变。
     代码:
     public class Demo01 {

public static void main(String[] args) {
        Test t  = new Test();
        int method = t.method();
        System.out.println(method);
}
}
class Test{
    public int method(){
    int i = 0;
    try{
        System.out.println(1/0);
        return i;
    }catch(Exception e){
          e.printStackTrace();
    }finally{
        i = 200;
        System.out.println("我一定会运行");
    }
    return i;
}
//返回路径:每次碰到return就会在返回路径中临时存储这个被返回的值,无论方法内有任何的改变,返回路径中的这个值一致不变。

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值