闪退,我们在使用手机或者电脑的过程中,有时会遇到这种情况,这也是用户最讨厌的情况之一。 一般一个开发软件,如果时常出现闪退的话,用户体验是非常差的。 所以要尽可能避免这种情况的发生。 那为什么会闪退呢? 就是程序它遇到了问题,又没有及时地处理,便只有崩溃了。而这种情况,便是异常。 在Java世界里面,异常指的是程序在执行过程中,出现的非正常的情况,最终会导致JVM的非正常停止。 它本身就是Java里的一个类,最上层的父类是Throwable,其下有两个子类:Error与Exception。 一、ErrorError:错误的意思,无法通过处理来解决的错误。 比如说我创建了一个数组,给它定义的长度为10亿,理论上是可以的,Java又没有要求说数组长度不能有10亿。但是,运行下看看: OutOfMemoryError:内存溢出。 也就是说,我的电脑内存不够用了,因为创建数组是需要内存的,所以它就报出错误。 这就好比,我们电脑下了一款非常牛逼的单机游戏。 运行的时候发现电脑配置不够,动不动就崩。 电脑又没法拓展,该怎么办? 解决这个问题只有一个方法:换一台电脑,别无他法。 与之对应的,在Java程序里面若是遇到这样的问题,就只能乖乖地修改代码了。 二、Exception我们平时常说的异常指的就是它,因为它是可以通过程序员的处理将其解决的,所以接触的更加多一点。 比较常见的如下: ArrayIndexOutOfBoundsException:数组越界异常。 不要看它这么长好像很复杂的样子,其实拆开来看单词都很简单:Array数组;index索引;OutOfBounds超出界限;Exception异常。 合在一起就是数组的索引超出了界限异常,也就是数组越界异常。 那么出现了异常Java里面是如何处理的? 我们举一个抛绣球的例子来说明下jvm处理异常流程。 好,现在有一个异常,被Java虚拟机知道了。
然后就抛绣球,这时候一个人接到了绣球,但是他发现不想娶这个女子,就继续抛给别人,接到的人也不想娶,就一路抛,最后又抛回到了那个女子的手中。 于是女子非常的生气,愤怒地骂了几句就走了。 在Java世界里面:出现了异常,然后都不处理,一直往前抛,最终抛给了Java虚拟机。 于是Java虚拟机非常地生气,打印错误信息,终止了程序。 程序终止这件事情在开发过程中是能不出现就不要出现的。 这也很好理解,你想啊,古代女子若是抛绣球都没人接,多丢人呀,她这辈子大概率不就完了么? 所以出现了异常要处理异常。 当然,我举的这个例子并不准确,只是对于刚接触Java没多久的人来说,可能更好理解。 三、异常的处理一定要搞清楚,程序员处理异常,不是说这种类型的问题不会出现了,而是说出现了问题要保证程序不能崩溃。 因为用户是不确定的,就比如说用户银行卡里只有10块钱,它提现时硬是要输入10000块,这就会出现异常。
这就是异常的处理,不是说问题再也不会出现了,而是说出现了问题要保证程序不能崩溃,并提示用户。 那么如何处理异常? 方式一:throw 因为Java里面异常本身就是一个类,所以创建对应的异常对象,再抛出说明。 方式二:throws 关键字throws运用于方法上,声明方法内部可能产生异常,用于表示当前方法不处理异常,而是提醒该方法的调用者来处理异常(抛出异常)。 throws写在方法名后面,后面可以接多个异常,用逗号隔开。 throws本身并没有处理异常,而是提示让方法调用者我这可能有异常,谁调用我得处理,并且也不是说一定就会出现异常,也有可能没有。 throws这个关键字就是警示提醒的作用,并没有处理异常。 方式三:try…catch 真正处理异常了的其实就两种方式:
以上就是对于异常的一些基本说明,暂时先就到这儿,明天再继续深入研究异常。 总结: |
|
来自: 刘小爱v > 《Java学习笔记》