java异常的类型

许多java初学者都会面临和博主一样的困惑,那便是在运行程序的时候会遇到各种各样的异常,但是自己却无法精确有效地定位那些异常的原因。今天博主便综合之前学习的经验和现有的一些资料来总结一下java异常的类型。

        

        1.所有异常的爸爸:java.lang.Throwable

     java是一门万物皆为对象的语言,其中异常也不例外。Throwable是所有异常的父类,我们平时遇到的所有异常都是这个类的子类。

        下图便是一些基本常见的异常子类与其关系图。


       

                    (图片来源于网络)

    2.异常类的三种主要类型:System error(系统错误),Exception(异常),RuntimeException(运行时异常)


              (1)system error

             系统错误是由 Java Virtual Machine(java虚拟机)抛出的,用Error类来代表。这类错误一般代表系统的内部错误(jvm自己的错误),但是这类问题很少发生,反正我还没有遇到过。如果遇到,可能是你所搭建的开发环境有问题,好好检察一下环境。

                     

                   (2)Exception

       异常描述的是由程序和外部环境所引起的一些错误,但是能被程序捕获和处理。也就是说这种异常是可以被程序员处理的!


                   (3)RuntimeException

              运行时错误是java程序员所会遇到次数最多的错误,因为这种错误一般是代表着是程序员在设计程序中所犯的错误。常见的错误有:空指针错误(NullPointer),数组越界错误(IndexOutOfBounds),算数错误(Arithmetic),非法传参(IleagleArgument)错误...等等

                 

  3.两大分类:检查异常(checked exception)和免检查异常 (unchecked exception)

             (1)checked exception
顾名思义,检查异常就是jvm会帮你检查的异常。RuntimeException,error和它们的子类都称为免检查异常,这就是说当操作存在抛出免检查异常的可能的时候,我们不强制需要对我们的代码做更多处理(例如添加 try catch语句块或者是声明异常)。jvm会在程序运行时主动抛出这些异常。

                但是个人在实际开发中的体会是即使是检查类型的异常,也需要我们去try  catch语句块去捕获和处理以避免jvm停止工作。以android开发为例,常常因为应用中有一个空指针错误(没有成功从后台获取所需信息)而突然闪退出应用程序,这对于用户肯定不是很好的一个体验。所以平时可以添加一个try catch语句块在中央调度程序的运行块中,然后把所有的非检查错误自定封装起来。在发生这类错误的时候直接弹出一个dialog告诉用户(哎呀,我不小心崩溃了!),这样的处理是不是很萌呢?

      (2)unchecked exception

                免检查异常就是需要程序员自己去捕获处理的异常,例如程序中总会有一些虽然符合机器逻辑但是并不符合我们业务逻辑的错误。这些错误虽然对于程序来说可以继续运行,但是并不是向我们所期望的方向所运行。这时候自定义异常继承Exception然后再在catch语句块中去添加处理措施。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值