Java异常小笔记

抓抛模式

  1. try-catch-finally 捕获异常后进行处理
  2. throws直接抛出异常

    throw抛出

throws 和throw的区别

throws是异常处理的方式;声明在方法上;将异常对象捕获抛给调用者处理
throw 是抛出异常对象;声明在方法内;

受检异常和非受检异常的区别

  1. RuntimeException 是非受检异常,这类异常要么是系统异常或程序逻辑错误,通常不会在编译时被检测,不需要进行处理
  2. 受检异常是RuntimeException以外的异常,必须进行处理,否则会有编译错误

error和Exception的区别

  1. 相同:都继承Throwable
  2. 不同:
    error通常为系统运行时的内部错误,不需捕获
    Exception分为由程序错误导致的RuntimeException(非受检异常),和由程序本身没有问题的非RuntimeException(受检异常)

异常处理方式

  1. 直接抛出throws
  2. 封装后再抛出:自定义异常对象再throw
  3. 捕获异常try-catch根据不同的异常分别处理
  4. 自定义异常
  5. try-catch-finally:try中异常之后的代码不再执行,finally里的代码一定会执行
  6. 实现AutoCloseable接口:解决finally中可能会发生异常的问题,调用close()自动释放资源,即使有异常也会被压制,抛出的仍为原始异常,可通过getSuppressed()获取异常列表

自定义异常

  1. 需继承Exception类或其子类
  2. 重写构造方法
    建议先自定义一个根异常BaseException,然后派生出其他业务类型的异常

具体异常

Exception

  • RuntimeException
    NullPointException,IndexOutOfBoundsException
  • 非RuntimeException
    IOException,FileNotFoundException,SQLException

项目异常处理

首先,定义一个基础类,所有action继承该类,返回值是定义好的响应类。该基础类里定义好成功或失败的方法,响应类定义好响应码,数据,描述信息。
其次在action里将代码用try-catch包起来,先接RuntimeExcetion异常,再接Exception异常
最后打印日志,用slf4j的日志处理,logger.info打印日志,logger.info("—处理—{}",param);
Service层直接向上抛出异常,使用定义好的异常处理类

项目异常日志打印

本地通过log4j2.xml配置控制台输出,服务器通过输出到指定文件
log4j2.xml通过配置打印器和输出介质
服务器通过.sh文件配置日志输出路径

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值