Java中的异常处理

序言:

在使用app时,我们常常会因为一个微小的bug妨碍到使用,进而对软件产生恶感,而选用竞品或是降低了自己在该app上的消费欲望。而作为代码撰写者的我们应当在日常代码中对exception进行bug处理,以提高用户的使用体验。

异常分类:

bb1c0ef8d2ee43fe912c474dd845e85d.png

 

Exception 又有两个分支 , 一个是运行时异常 RuntimeException , 一 个是检查异常 CheckedException。

        RuntimeException 如 :NullPointerException 、 ClassCastException ;
        CheckedException 如: I/O 错误导致的 IOException、SQLException。

        RuntimeException 是那些可能在 Java 虚拟机正常运行期间抛出的异常的超类。 如果出现RuntimeException,那么一定是程序员代码书写导致的错误,如栈溢出,空指针等。

        CheckedException:一般是外部错误,这种异常都发生在编译阶段,Java 编译器会强制程序去捕获此类异常,即会出现要求你把这段可能出现异常的程序进行 try catch,该类异常一般包括两个方面:

  1. 试图在文件尾部读取数据
  2. 试图打开一个错误格式的 URL
  3. 试图根据给定的字符串查找 class 对象,而这个字符串表示的类并不存462de74e63c1405c862e01167566c64e.png

 注:异常种类繁多没必要全部记住,但需要掌握常见的异常。

异常处理机制:

37eea11fd2b34c9589151aa72c147d3c.png

 

异常处理可看做抛抓模型。抛:当程序执行或编译出现异常时,会在异常处自动生成一个异常对象抛出,一旦抛出对象,其后代码不再运行。抓:可看做异常的处理方式catch

处理方式1:try-catch-finally,try中的结构出现的异常类型由catch一一列举处理,处理后直接进行下个结构的代码。

处理方式2:throws,只是将异常抛给了方法的调用者,在上级体系还是需要异常处理方式一来解决。

 

怎么选择用try-catch-finally还是throws:

1,如果父类被重写的方法没有用throws方式处理异常,则子类中重写的方法也不能使用throws。且子类重写的方法中抛出的异常不应大于父类中抛出的异常。

2,执行的方法a中,如果又调用了几个方法,且为递进关系执行,建议用throws的方法处理,a中可用tcf方法处理。

自定义异常类:

1,继承现有的异常结构

2,提供全局常量:serialVersionUID

3,提供重载的构造器

throw与throws区别:

throw是异常处理的一种方式,用于手动生成 抛出一个异常对象,throws用于声明异常,把异常抛往更高级结构。

6a7b3e40aea3454b89197c5ba7813a8f.png

注:当出现异常时代码直接跳转到相应的catch结构或finally结构,其中finally是可选的结构。

 catch中的异常类型如果满足子父类关系,则子类必须放在父类之上。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值