介绍

  • 异常的概述
  • 异常的分类
  • 异常的处理方式
  • 自定义异常
  • Date类SimpleDateFormat类,Localdatetime类
  • 日志Logback介绍
  • 日志Logback入门
  • 日志Logback配置文件介绍
  • 异常的概述

    1 异常的概述

    1.1 什么是异常?

  • 异常就是程序出现了不正常情况,程序在执行过程中,数据导致程序不正常,最终导致了JVM的非正常停止

  • 注意:语句错误不算在异常体系中

    1.2 异常的存在形式

  • 异常有类型之分,比如我们之前有接触过的比较熟悉的

数组越界异常(ArraysIndexOutOfBoundsException)
空指针异常(NullPointerException)
类型转换异常(ClassCastException)
当程序中产生异常时,其实就是在异常的位置创建了一个该异常的对象,该对象携带了相关的异常信息。

  • 简单来说:一场就是Java中提供的类的对象

    1.3 程序中异常产生后,是如何处理的

  • 程序中一旦产生异常,首先会终端向下执行。异常的传递要根据处理方式而定,如果没有处理,默认是将异常传递给本方法的调用者。不断往回传递,直到JVM收到该异常,此时程序终止执行

    2.1 异常的分类

  • 编译时期异常

    • 非RuntimeException及其子类:编译时异常就是在编译的时候可能出现的异常,编译时期必须处理,否则程序无法执行
  • 运行时期异常
    • RuntimeException及其子类:运行时异常就是在运行时可能出现的异常,在编译时期不需要处理
  • 缺点:用户体验不好

    异常体系:

    Day_07(异常,日志框架,阶段项目) - 图1

3.2 手动处理异常方式

3.2.1 声明异常
  • 声明异常—throws
    • 修饰符 返回值类型 方法名 (参数列表)throws 异常类型1,异常的类型2…{…}
    • 举例:public void show() throws NullPointException ,ArrayIndexOutOfBoundsException{….}
  • 作用:

    • 表示调用当前的方法可能会出现某些异常,使用时,需要注意!
    • 如果当前方法没有出现任何异常,那么代码会正常执行
    • 如果当前方法中出现了异常,会把异常交给本方法调用者处理(甩锅)
      3.2.2 抛出异常
  • 思考:

    • 以前出现了异常,虚拟机帮我们创建一个异常对象,抛给调用者。但是如果我们需要手动创建一个异常对象该如何写?
  • 格式:
    • 修饰符 返回值类型 方法名(参数列表){

throw new 异常对象();
}

  • 注意:
    • 抛出异常的格式必须在方法的内部完成
    • 如果手动抛出一个异常,下面的代码无法执行
  • 作用:

    • 在方法中,当传递的参数有误,没有继续运行下去的意义了,则采取抛出处理,表示让该方法结束运行
    • 告诉调用者方法中出现的问题原因
      3.2.3throws和throw的区别
  • throws:

    • 用在方法声明后面,跟的是异常类名
    • 表示声明异常,告知调用者调用该方法有肯恶搞会出现这样的异常
  • throw:
    • 在方法体内,跟的是异常对象名
    • 表示手动抛出异常对象,告知调用者数据传入有误 | throws | throw | | —- | —- | | 用在 方法声明后面,跟的是异常类名 | 用在方法体内,跟的是异常对象 | | 表示声明异常,调用该方法有可能会出现这样的异常 | 表示手动抛出异常对象,告知调用者数据传入有误 | | 异常对象由JVM创建 | 异常对象我们自己创建 |

捕获异常

  • 捕获处理异常介绍:try,catch
    • 之前的声明或者抛出都是将异常传递出去,让调用者知道异常信息。进而捕获处理时本方法内部进行处理,能够阻止异常的传递,从而保证程序能够继续往下执行。
  • 捕获异常的格式
    • try{

try中存放可能会出现问题的代码
代码1…
代码2…
代码3…
}catch(异常类型 变量名){
4.处理异常方案
打印异常,获取异常原因记录日志…..
}5.其他代码

  • 执行方式
    • 如果try中没有遇到问题,怎么执行?
      • 从上往下依次执行,catch中不执行
    • 如果try中间代码遇到了问题,问题下面的代码还会执行吗?
      • 不会执行,会拿当前异常对象和异常类型匹配,匹配成功执行处理异常代码
    • 如果出现的问题没有呗捕获,那么程序如何运行?
      • 如果异常没有捕获到,虚拟机会帮我们处理
  • 多异常捕获处理方案
    • 多个异常每个异常单独处理
    • 多个异常,一个捕获,多次处理
    • 多个异常,异常一次捕获,一次处理

      3.3Throwable的成员方法

      | 方法名 | 说明 | | —- | —- | | public String getMessage() | 返回此throwable的详细消息字符串 | | public String toString() | 返回此可抛出的简短描述 | | public void printStackTrace() | 把异常的错误信息输出在控制台 |

4.1 自定义异常概述

  • 当JDK中的异常类型,不满足实际的业务需要时。就可以自己定义异常。例如,学生的年龄数据,如果是负数或者数据 超过了150认为是不合法的,就需要抛出异常。JDK中就没有表示年龄的异常,就需要自己定义异常了。

    4.2 实现步骤

  • 定义异常类

  • 写继承关系
  • 空参构造
  • 带参构造

    4.3自定义异常注意

  • 如果要自定义编译时异常,就继承Exception

  • 如果要自定义运行时异常,就继承RuntimeException

    日期相关类

    Date类

  • 概述:java.util.Date表示特定的瞬间,精确到毫秒

  • 构造方法:
    • public Date():创建的对象,表示的时当前计算机系统的时间
    • public Date(long time):Date对象 = 1970/1/1 0:0:0 + time毫秒值
  • 成员方法:

    • public long getTime():返回毫秒值 = 当前Date代表的时间 - 1970/1/1 0:0:0
    • public void settime(long t):Date对象 = 1970/1/1 0:0:0 + time毫秒值

      DateFormat类

  • 概述:主要用于操作日期格式的一个类

  • 作用:
    • 格式化:Date—>String
    • 解析:String —>Date
  • 构造方法:
    • SimpleDateFormat(String pattern) 给定日期模板创建日期格式化对象
  • 成员方法:
    • public String format(Date d):格式化,将日期对象格式化字符串
    • public Date parse(String s):解析,