java—异常处理

异常处理

程序错误分类:

编译错误:即编译器可以发现的语法等的错误

运行错误:程序在执行时发生的错误

逻辑错误:程序最终结果和预期不一致的错误

异常:即是在程序运行时出现的错误

异常处理机制:

在这里插入图片描述

  • Error和Exception类都是从Throwable继承的

  • Error类是错误,表示严重的系统错误,无法根据程序处理

  • Exception类是异常,程序本身可以捕捉并进行相应的处理

具体分为:

​ 非受检异常(运行时产生—RuntimeException),可以不进行处理

  • ​ 运行时异常可以通过判断条件来替代异常处理的过程

​ 受检异常(编译时产生—除了RuntimeException及其子类之外的异常类),必须要进行处理,否则编译不能通过

常用异常:

在这里插入图片描述

异常处理的五个关键字:

try,catch,finally,throw,throws

捕获异常:
在这里插入图片描述

try—catch—finally结构捕获异常

  • 该结构的获取:

    圈住相应的代码块, 
    右键->Surround With->选择捕获异常的多种结构
    

抛出异常:当程序执行中发现异常,则会生成该异常类的对象提交给java运行时系统

try {   ...  
//监视代码执行过程,一旦返现异常则直接将异常抛出至catch
// 如果没有异常则直接跳转至finally} 
catch (ExceptionType ExceptionObject) {   
 //对于异常执行的代码块,如果没有任何异常发生则不会执行;
 //当接受到try抛出的异常后,ExceptionObject接收该异常对象与ExceptionType进行比较,如果类型相同则进行处理或如果类型不同则向上抛出。} 
finally { 
 //可选执行的代码块,不管是否有异常发生,
 //即使内存溢出异常也执行,通常用于处理善后清理工作。}
  • 对于受检异常,除了可以用try—catch语句(此时就不需要finally块了)捕获外,还可以用throws抛出

  • try后若无catch块,则必须要有finally块

  • 当有多个异常时,异常的产生是由语句顺序决定的,与catch块的顺序无关,当第一个异常产生并被抛出之后,后面的异常就不会再产生了

  • 在这里插入图片描述

  • 对于finally块:
    在这里插入图片描述

  • try—catch—finally结构可以嵌套调用

throw 语句格式:

throw new 异常类型();
  • throws声明抛出异常,即声明出可能会出现的异常,不在方法中去进行异常处理,而是向上抛出交由调用者去处理

    所声明的方法体可以有对异常具体的throw抛出语句,为了在自定义时使用,能够在上层中的try块中抛出

  • throw new出的对象必须是Throwable类及其子类的

throws声明格式:

函数返回类型 函数名() throws 异常名;

自定义新的异常类型:

class 异常类名 extends Exception{}
  • 即相当于创建一个新的异常子类继承于Exception类,在类中自定义异常类相应的方法等

    ​ 自定义的异常类有着与判断条件相似的效果,并且是面向对象的

  • 根据示例去理解如何运用是很必要的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值