小滴课堂-学习笔记:(7)Java 异常Exception讲解

20 篇文章 0 订阅
14 篇文章 0 订阅

logo 愿景:"让编程不再难学,让技术与生活更加有趣"


更多架构课程请访问 xdclass.net

目录

第1集 Java异常Exception讲解

第2集 Java内置异常体系分类和核心方法讲解

第3集 java进阶基础之Try Catch异常捕获

第4集 Java异常进阶之Finally讲解和多重捕获

第5集 java异常处理之throws/throw关键词

第6集 java进阶基础之自定义异常

干货文档


第1集 Java异常Exception讲解

简介:介绍什么是异常,java出现异常的场景

  • 什么是错误

    • 程序运行时发生的不被期望的事件,阻止了程序按照预期正常执行

    • 常见程序错误分三类

      • 编译错误:新手最常见,没遵循语法规范

      • 运行时错误:程序在执行时,

      • 逻辑错误:程序没有按照预期的逻辑顺序执行

  • Java.lang软件包中有一个java.lang.Throwable类,这个类是java中所有错误和异常的超类,Throwable类有两个子类,Error与 Exception

    • Error

      • 是Throwable 的子类,包含大量子类

      • 出错后程序无法处理,如OutOfMemoryError

    • Exception

      • 是Throwable 的子类,包含大量子类

      • 程序本身可以处理的异常,如ArrayIndexOutOfBoundException

    • 两大类

      • 可查异常(编译器要求必须处置的异常):RuntimeException及其子类以外,其他的Exception类及其子类, 如 IOException和ClassNotFoundException

      • 不可查异常(编译器不要求强制处置的异常): 包括运行时异常(RuntimeException与其子类)和错误(Error),如ArrayIndexOutOfBoundsException

      •  

第2集 Java内置异常体系分类和核心方法讲解

简介:讲解java内置的异常和Throwable核心方法介绍

  • java内置异常

    • 可查异常(必须要在方法里面捕获或者抛出)

      • ClassNoFoundException 应用程序试图加载类,找不到对应的类

      • IllegalAccessException 拒绝访问一个类的时候

      • NoSuchFieldExcetion 请求的变量不存在

      • NoSuchMethodException 方法不存在

    • 不可查异常

      • ArrayIndexOutOfBoundsException 数组索引越界

      • ClassCastException 强制失败抛出异常

      • NullPointerException 需要对象的地方使用 null 时,抛出该异常

      • NumberFormatException 将字符串转换成一种数值类型,但该字符串不能转换为适当格式时,抛出该异常

  • Throwable类核心方法

    • public String getMessage()

      • 异常的详细信息

    • public Throwable getCause()

      • 异常原因

    • public void printStackTrace()

      • 打印错误的堆栈信息,即错误输出流,可以看到错误原因和所在位置

    • public StackTraceElement [] getStackTrace()

      • 堆栈层次的数组,下标为0的元素代表栈顶,最后一个元素代表方法调用堆栈的栈底

 

 

第3集 java进阶基础之Try Catch异常捕获

简介:讲解使用Try Catch进行异常捕获

  • 异常处理之捕获

    • 语法

    try{
       // 可能发生异常的代码
    }catch(AExceptionName e){
       //出异常的时候处理
    }catch(BExceptionName e){
    ​
    }fianall{
        
    }
    • try后面跟一个或多个catch块,或一个finally块,或两者的组合

    • catch 不能独立于 try 而单独存在

    • 如果代码没有对应的异常类进行捕获,则默认打印异常堆栈

  • 课程代码演示

 

 

第4集 Java异常进阶之Finally讲解和多重捕获

简介:讲解finally和多重异常捕获

  • 一个 try 代码块后面跟多个 catch 代码块的情况就叫多重捕获

    • 语法

    try{
       // 可能发生异常的代码
    }catch(ExceptionName1 e1){
       //出异常的时候处理
    }catch(ExceptionName2 e2){
       //出异常的时候处理
    }
    • 代码中发生异常,异常被抛给第一个 catch 块, 如果不匹配则继续往下一个catch进行传递

     

  • finally关键字

    • 用来创建在 try 代码块后面执行的代码块

    • finally 代码块中的代码总会被执行

    • 一般用于资源回收释放等操作

    • 语法:

      try{
         // 可能发生异常的代码
      }catch(ExceptionName1 e1){
         //出异常的时候处理
      }finally{
          //肯定执行的代码
      }
      或者
      
      try{
         // 可能发生异常的代码
      }finally{
          //肯定执行的代码
      }
      • 课程代码演示 面试题,返回结果最终是finally为准(尽量不要在finally里面使用return,会忽略try catch里面的return,容易造成未知的bug)

        ​
            public static int divide(int num1, int num2){
                try {
                    int result = num1/num2;
                    return result;
                }catch (Exception e){
                    System.out.println("出异常");
        ​
                }finally {
                    System.out.println("finally执行了");
                    return -2;
                }
             //   return -1;
            }
        

         

  • 三者的组合

    • try,catch和finally块有两种可能的组合:try-catch-finally或try-finally。

 

第5集 java异常处理之throws/throw关键词

简介: 讲解异常的抛出throw和声明throws

  • 代码出异常常见的处理方法

    • try catch捕获

    • throws 声明异常 往外抛出

      • 语法:throws子句放在方法参数列表的右括号之后,一个方法可以声明抛出多个异常,多个异常之间用逗号隔开。

      • 例子

        public class Main {
          public static void readChar() throws IOException,RemoteException {
            int input = System.in.read();   
          }
        }
        

         

  • try catch中捕获了异常,处理方法

    • 当前捕获自己处理

    • 捕获自己处理然后继续往外面抛异常

      • 语法

        throw  new ExceptionName("异常信息");

         

      • 例子

        throw  new IOException("File not  found");

         

 

  • 总结:当抛出一个被检查的异常,我们必须使用try-catch块来处理它,或者在方法声明中使用throws子句继续往外抛

 

 

第6集 java进阶基础之自定义异常

简介:讲解使用java进行自定义异常

 

  • 为什么要使用自定义异常

    • 当前JDK内置的异常不满足需求,项目会出现特有异常

    • 自定义异常可以让业务更清晰

 

  • 如何进行自定义异常

    • 异常都是继承自Exception类,所以我们要自定义的异常也需要继承这个基类。

  • 例子

public class BaseException extends Exception {
​
 private  String errorMessage;
 private  String errorCode;
 
 public BaseException(String errorCode,String errorMessage){
  super(errorMessage);
  this.errorCode = errorCode;
  this.errorMessage = errorMessage;
 }
​
 public  String getErrorMessage() {
  return errorMessage;
 }
 public  String getErrorCode() {
  return errorCode;
 }
​
 public  void setErrorCode(String errorCode) {
  this.errorCode = errorCode;
 }
​
 public  void setErrorMessage(String errorMessage) {
  this.errorMessage = errorMessage;
 }
​
}

干货文档

                                                        关注公众号发送:“CSDN干货文档”  即可领取

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

dev666

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

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

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

打赏作者

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

抵扣说明:

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

余额充值