6.2错误与异常

1错误与异常
在这里插入图片描述所有异常的基础类是throwable
内部错误:程序员通常无能为力,一旦发生,想办法让程序优雅的结束
异常:你自己程序导致的问题,可以捕获、可以处理

错误分类:1用户输入 2设备错误 3物理限制
在这里插入图片描述3异常处理(讲义没有2我也不知道为啥)
(1)异常:程序执行中的非正常事件,导致程序无法再按预想的流程执行
return之外的第二种退出途径
不异常处理的话:正常的逻辑代码与错误处理代码交织在一起
使用异常处理可以将二者分离
(2)异常分类
1、运行时异常 2、其他异常
运行时异常:由程序员在代码里处理不当造成
其他异常:由外部原因造成
非运行时异常,是程序员无法完全控制的外在问题所导致的
即使在代码中提前加以验证(文件是否存在),也无法完全避免失效发生
(3)checked unchecked exception
在这里插入图片描述
checked:编译器可帮助检查你的程序是否已抛出或处理了可能的异常
unchecked:Errors and Runtime Exceptions
unchecked:不需要在编译的时候用try…catch等机制处理,但是不用机制有可能failure

try{
可能发生错误的代码
}catch(err){
只有发生错误时才执行的代码
}finally{
无论是否出错,肯定都要执行的代码
}
使用要点:
使用try包裹的代码,即使不出错,效率也比不用try包裹的代码低;
在try中,尽量少的包含可能出错的代码;
无法提前预知错误类型的错误,必须用try catch捕获;
finally可以省略;
摘自cnblogs.com/8023-CHD/p/10930813.html

checked: 必须捕获并指定错误处理器handler,否则编译无法通过

java的异常处理
在这里插入图片描述

throws 说明可能抛出
throw 抛出
catch来处理
– 如果客户端可以通过其他的方法恢复异常,那么采用checked exception; – 如果客户端对出现的这种异常无能为力,那么采用unchecked exception;(说的很抽象其实应该是编译提示了就是checked 没提醒就自己设置异常这样)
– 异常出现的时候,要做一些试图恢复它的动作而不要仅仅的打印它的信息。

(4)Declaring Checked Exception by throws
在规约里面声明 @throws在这里插入图片描述程序员必须在方法的spec中明确写清本方法会抛出的所有checked exception, 以便于调用该方法的client加以处理
unchecked异常不需要写在spec中
抛出多个checked异常时,都要在方法签名中列出
如果没有handler来处理被抛出的checked exception,程序就终止执行

不建议生成unchecked 异常与error
LSP原则协变
(5)How to throw Exception
其实throw就行了没啥好学的
意思就是用个exception类就行了
(6)create an exception
没啥好说的java啥都给了在这里插入图片描述在这里插入图片描述(7)Catching Exception
异常发生后,如果找不到处理器,就终止执行程序,在控制台打印出stack trace。
也可以不在本方法内处理,而是传递给调用方,由client处理(“推卸责任”),某些情况下,client更清楚如何处理
在这里插入图片描述
(8) Rethrowing and Chaining Exceptions
本来catch语句下面是用来做exception handling的,但也可以在catch里抛出异常,
在这里插入图片描述(9) finally Clause
在这里插入图片描述在这里插入图片描述就算catch有return也会执行finally
(10) The Try-with-Resources (TWR) Statement
对于实现了AutoCloseable接口的资源,Java提供自动close资源的方法
在这里插入图片描述在这里插入图片描述(11) Analyzing Stack Trace Elements
异常处理机制:异常被抛出时,JVM根据异常中的信息查找处理异常的代码
handler,通过调用栈进行反向查找(从栈顶开始),直到找到为止,如果找
不到则终止程序。在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值