Java异常处理

开发工具与关键技术:MyEclipse 10、JAVA
作者:曾浩源
撰写时间:2019年06月17日

Java的异常处理机制可以让程序具有极好的容错性。当程序运行出现意外情形时,系统会自动生成一个 Exception对象来通知程序,从而实现将“业务功 能实现代码”和“错误处理代码”分离,提供更好的可读性。

使用try…catch捕获异常
Java异常处理机制为:抛出异常,捕捉异常,处理异常。
try…catch语法格式

Java把所有的非正常情况分成两种:异常(Exception)和错误(Error),它们都继承Throwable父类。

在这里插入图片描述
在使用try…catch捕获处理异常时需要注意:

1.不要过度使用异常,不能使用异常处理机制来代替正常的流程控制语句

(1)java异常机制确实方便,但滥用异常机制也会带来一些负面影响。过度的使用异常主要体现在两个方面:
(2)把错误和异常混淆在一起,不在编写任何的错误处理代码,而是用简单的抛出异常来代替所有的错误处理。
(3)使用异常来代替逻辑控制。
以上两点都是我们在编程中需要注意的,不要这么去做。

2. 异常捕获时,一定要先捕获小异常,再捕获大异常。否则小异常将无法被捕获
3. 避免出现庞大的try块
很多初学者异常处理机制的人喜欢在try块中放置大量的代码,看上去很简单,但是这种简单只是一种假象,也仅仅是在写程序上比较简单。这样做造成了两个问题:

try块中的代码多了,就大大的增加了try中出现异常的可能性,从而导致分析异常原因的难度也大大的增加了。
比如一个有100行代码的try块发生异常,你需要梳理、分析这一百行代码。把这100行代码分两个try中,么个try10行,这样则分析时就缩小的分析代码的范围。
try中的出现异常的可能性增多了,你需要对每种可能性提供catch,就意味着你的catch也跟着多了,catch逻辑也复杂了,反而增加了变成难度。
避免使用catch all( catch(Throwable t){ } )
我们不看否则,我们有时候编程,图一个省力,省时间,就索性的catch all了。这样做不能捕获具体异常,针对具体的异常进行处理。

4. 避免使用catch(Exception e){}
5. 不要忽略异常

我们既然已经捕获到异常,就不要仅仅是在catch块中输出异常,应该在catch块中试着修复异常。记住一定不要在能在catch块中不放代码,编程空catch块,这是极其可怕的,程序不安预期运行,你就是找不到异常和错误。建议对catch的异常采取适当的措施,如下:
处理异常。对异常进行合适的修复,然后绕过异常发生地继续执行。对于checked异常,程序应该尽量修复。
重新抛出异常。将异常包装成当前层的异常,然后重新抛给上层调用者。
在合适的层处理异常。如果当前方法不知道如何处理异常,就不要在当前方法处理,直接抛出该异常,让调用者来处理。

除非有充分的理由,否则不要创建自定义异常。如果要对某类程序出错做特殊处理,那就自定义异常。需要自定义异常的理由如下:

1)方便测试。通过抛出一个自定义的异常类型实例,我们可以使捕获的代码精确的知道所发生的事情,并以符合的方式进行恢复。
2)逻辑包装。自定义异常可以包装多个其他异常,然后抛出一个业务异常。
3)方便调用者编码。在编写自己的类库或者业务层代码的时候,自定义异常可以让调用方更方便处理业务逻辑。例如,保存数据失败可以分成两个异常“数据库连接失败”和“网络异常”。
4)引入新异常类。这使程序员能够根据异常类在代码中采取不同的操作。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值