JavaSE知识复习笔记10

本文详细介绍了Java中的异常处理机制,包括异常分类(编译时异常和运行时异常)、处理方式(throw和try...catch...finally)、以及如何使用Exception类和自定义异常。
摘要由CSDN通过智能技术生成

Java异常相关

  • 常见的Java异常类
    常见异常类
  • 异常 Exception
    • 程序中的不正常情况 就视作异常
    • Java语言提供了一套的完整的异常处理机制
    • Java中的异常以异常类的方式存在
    • 在Java程序中 会将异常类实例化为对象后抛出异常
  • 错误 Error
    • 当错误发生时 JVM只能终止 Error无法被异常机制处理
  • 异常分类
    • 编译时异常 Exception及其直接子类
      • 需要在编译阶段处理
      • 通常比较容易发生
    • 运行时异常 RuntimeException及其子类
      • 不需要编译阶段时间处理
      • 发生的机率较小 一般不会处理
    • 对于编译时异常和运行时异常 都会发生在运行阶段中

异常的处理方式

  • 对于Java中的异常处理 有两种处理方式
    • 直接抛出 使用 throw 语法
      • 将异常交给上层程序去处理
    • 使用 try...catch 进行异常捕捉
      • 捕捉异常对其进行处理
  • 如果上抛到main方法 这是再不处理 还是选择抛出 会抛出到 JVM
    • JVM 接收到异常 只好终止程序的运行

使用 throw 进行抛异常

throw new Exception();
  • 在需要抛出异常的位置 直接使用 throw 来抛出异常
  • 当在方法中抛出异常时
    • 可以选择在此处使用 try…catch 处理异常
    • 需要在方法上指明抛出何种异常 使用 throws 抛出异常类型(可以抛出其父类)

使用 try catch 处理异常

  • 完整结构 try {...} catch (Exception e) {...} finally {...}
  • try 代码块
    • 在 try 代码块中定义可能会出现异常的代码片段
  • catch
    • 用于捕捉异常
    • catch 代码块可以存在多个 用于对异常进行精确处理
    • catch 处理的异常从小到大(从子到父)
    • 在JDK后 支持在一个 catch 中捕捉多个异常
  • finally
    • finally 代码块 用于执行一些必须执行的代码(无论是否发生异常) 通常用于资源释放

在 try 中存在 return 时

  • 对于Java中的方法 return 一定时最后执行的代码
  • 对于finally代码块 finally也必定会执行
  • 当执行到 return 时 JVM会将 return 该行的语句结果保留(计算会变为值)
    • 例如 try 中存在 return i++
      • 会先保留一个 return i的字面值 (i当时的值) 而后才会执行 i++ 操作
      • 然后执行 finally 中的代码
      • 当执行 finally 结束 Java程序会执行那条保留的return语句
        • 如果finally中也存在 return语句 这时候return语句会顶替原来的return语句

异常处理的规则

  • 重写方法时 抛出更少的异常 或者抛出父类异常
  • 对于异常处理 主要关系编译时异常 运行时异常按照需求处理即可

Exception类

  • 是Java中编译时异常的基类
  • 需要使用自定义异常时需要继承Exception类

Exception常用方法

  • String getMessage()
    • 用于获取构造异常时传入的简要信息
  • void printStackTrace()
    • 用于在控制台输出出现异常的堆栈信息
    • 该方法异步输出 所以输出时的位置可能不太确定
    • 开发中常用于定位出错位置

使用自定义异常

  • 编写自己的异常类 继承 Exception / RuntimeException 类
  • 提供一个无参构造方法和一个带有String类型的构造方法(用于传入异常信息)
  • 当继承 Exception 时 就是编译时异常
  • 当继承 RuntimeException 时 就是运行时异常
  • 9
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值