Java核心技术 异常和异常处理

一、异常概述

●异常:程序不正常的行为或者状态。inta= 5/0;

-数组越界访问

-读取文件,结果该文件不存在

●异常处理

-程序返回到安全状态

-允许用户保存结果,并以适当方式关闭程序

二、异常分类

●Throwable:所有错误的祖先

RuntimeException:程序自身的错误

●5/0,空指针,数组越界...

-非RuntimeException:外界相关的错误

●打开一个不存在文件

●加载一个不存在的类...

●Unchecked Exception: (编译器不会辅助检查的,需要程序员自己管的)异常,包括Error子 类和

RuntimeException子类。.

●非RuntimeException的Exception的子类: (编译器会辅助检查的)异常,checked exception。

●注意:编译器会检查程序是否为checked exception配置了处理。如果没有处理,会报错。

●Checked Exception(非RuntimeException的Exception的子类),程序员必须处理,以发生后处理为主。编译器会辅助检查。

●Unchecked Exception中的RuntimeException子类,程序必须处理,以预防为主。编译器不关心此类异常,也不会辅助检查。

●Error的子类,可以不用处理。

●总结

异常是程序发生不正常的行为或状态

Java异常分成Exception(程序相关)和Error(系统相关)

Java程序相关的异常又分成unchecked异常和checked异常,掌握其不同的处理原则

编译器会辅助检查checked异常

三、异常处理

●异常处理

一允许用户及时保存结果

-抓住异常,分析异常内容

-控制程序返回到安全状态

●try-catch-finally:一种保护代码正常运行的机制。

●异常结构

- try-.catch(catch可以有多个,下同)

- tr...catch... finally

tre.inally

try必须有,catch和finally至 少要有一个

●try:正常业务逻辑代码。

●catch: 当try发生异常,将执行catch代码。若无异常,绕之。●finally: 当try或catch执行结束后,必须要执行finally。

●查看例子TryDemo,java

●catch块可以有多个,每个有不同的入口形参。当已发生的异常和某一个catch块中的形参类型一致,那么将执行该catch块中的代码。如果没有一个匹配,catch也不会被触发。最后都进入finally块

●进入catch块后,并不会返回到try发生异常的位置,也不会执行后续的catch块,一个异常只能进入一个catch块。

●catch块的异常匹配是从上而下进行匹配的。

●所以一般是将小的异常写在前面,而一些大(宽泛)的异常则写在末尾。

●查看MultipleCatchDemo.java。

●方法存在可能异常的语句,但不处理,那么可以使用throws来声明异常。

●调用带有throws异常( checked exception) 的方法,要么处理这些异常,或者再次向外throws,直到main函数为止。

●参看ThrowsDemo.java和MyExceptionTest.java

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qq_42910912

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值