Java异常处理机制

一、Java异常

在程序运行过程中,如果环境检测出一个不可执行的操作,就会出现运行时错误。例如,如果使用一个越界的下标访问数组,程序就会产生一个ArrayIndexOutOfBoundsException运行时错误。

在Java中,异常会导致运行时错误。异常就是一个表示阻止执行正常进行的错误或者情况。如果异常没有处理,程序就会非正常终止。

Java异常类层次结构图


Java中Error和Exception都继承自Throwable

Error:错误,不可处理

Exception:异常,可以处理

二、异常分类

Java中异常分为checked exception和runtimeException

runtimeException:Java编译器不会检查,也就是说,程序中可能出现这种异常,但编译器不会报错,能通过。

checked exception: 除runtimeException以外的异常都属于checked exception,在遇到这种类型异常,我们必须自己处理,否则无法通过编译器。

三、异常处理机制

在Java中,异常处理机制为:抛出异常,捕获异常

抛出异常:Java中抛出异常可以在方法体里采用throw关键字抛出异常,也可以在方法签名上通过throws关键字抛出异常。

1.throws抛出异常

语法格式:方法名 throws Exception1,Exception2,...{}

注:使用throws抛出的异常,如果调用者不想处理该异常,可以继续向上抛出,但最终需要有能够处理该异常的调用者。

throws抛出异常规则

1)如果是运行时异常,可以不抛出,编译能通过,但会产生运行时错误。

2)必须声明方法可能抛出的可查异常。即一个方法可能出现非运行时异常,要么使用try-catch处理,要么使用throws抛出,如不处理,将编译错误。

3)一个方法抛出了异常,该方法的调用者就得处理或抛出异常。

4)覆盖一个方法时,不能声明跟覆盖方法不同的异常。声明的异常必须跟覆盖方法声明的异常同类或其子类。

throw抛出异常

throw抛出异常在方法体中,程序会在throw语句后终止,其后面的语句执行不到。

捕获异常:try,catch,finally

try-catch语句:try{}catch(Exception e){}

try块中写可能抛出异常的代码块,catch捕获抛出的异常并处理。

注:try中可能抛出不同异常,可以有多个catch块,Java会捕获抛出的异常与catch块中匹配,运行其中代码。

try-catch-finally:try{}catch(Exception e){}finally{}

try-catch一样,finally其中代码不管是否有异常总会执行。

小结

try块:用于捕获异常,其后可接多个catch块。

catch块:用于处理try块捕获的异常。

finally块:无论是否捕获或处理异常,其中代码总会执行。当try块,catch块中遇到return语句时,finally将会在return前执行。

try,catch,finally语句块执行顺序

1)当没有 捕获到异常时,try中语句依次执行,程序将跳过catch块,执行finally块中语句。

2)当捕获到异常,但是没有catch到该异常时,finally中语句依然会被执行,最后会运行错误。

3)当捕获到异常时,并catch到该异常,try中出现异常前代码依次执行,到抛出异常语句跳到catch块中依次执行其中语句,最后执行finally中语句。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值