关于java异常的一点思考

时间:2022-03-21 12:07:06

关于异常的一点思考

异常生命周期


异常的来源

  • 所有的异常都是抛出来的 有底层api抛出的 有自定义抛出的

异常的处理

1, 运行时异常
  • 不做任何处理仍可编译通过 不建议捕获(不建议用异常来做流程控制,异常是程序中的非正常情况)
2, 受检查异常
  • 必须处理,否则编译通过

  • 处理方式:捕获处理 或者抛出处理

异常的终态

1, 对于捕获处理的异常
  • 虚拟机不再做额外处理
2, 对于抛出的异常
  • 受检查异常:在编译通过的情况下,会一直抛出直到main 层,如果在main仍然没有 捕获处理 则 虚拟机会调用 e.printstacktrace方法打印异常信息

  • 运行时异常:因为运行时异常会自动抛出一致到被捕获或者main后. 所以在main之前 在main里面,猜想都是和受检查异常保持一致 一致回溯到main,然后虚拟机调用e.printstacktrace打印异常信息

关于编码中各种异常带来的代码健壮性的问题


对于代码中可能出现的各种情况予以处理

  • 对于正常逻辑处理 输入合法或者不合法等

  • 对于异常逻辑处理 读写错误等等

基本原则

  • api层次的输入输出层次的直接不处理 因为默认输入是合法的 不合法的情况应该在上一层考虑到,进行处理

  • 在最外层包裹一个 try catch , 以防部分未处理的异常,但不要依赖该外层异常的统一处理,应该是在业务层面考虑到,并进行了处理