目录
前言
Android 性能优化(一)闪退治理、卡顿优化、耗电优化、APK瘦身 ,这篇中我强调“运行稳定大于一切”,保证程序运行中不出现Crash,要比卡顿、耗电、安装包大小等方面更为重要。
当一个方法发生错误时,此方法会产生一个对象并将其交给运行时系统。 这个对象就叫异常对象,它包含了错误信息、异常类型以及程序的状态。创建一个异常对象并将其交给运行时系统称之为抛出异常。造成Crash的原因有很多,而在程序运行过程中Throwable抛出的异常或错误就是其中最普遍的成因。本篇将对Throwable下的Exception和error有一个比较清晰的认识。
一、定义
-
throwable
可抛出的意思,是根基类,子类有异常exception和错误error。在java中只有Throwable类型的实例才能被抛出(throw)或者捕获(catch),它是异常处理机制的基本类型。
-
exception
表示程序运行中出现的非正常状态,并告诉我们程序发生了什么问题,且程序自身可以进行拦截或处理的异常。
-
error
是指程序无法处理的错误,其中包括程序运行时 JVM出现的问题。
二、异常类型
Throwable分为检查型异常(Checked Exception)和非检查型异常(Unchecked Exception)。
- 检查型异常必须在源码中进行try-catch捕获处理,这是编译检查的一部分。
- 类似NullPointerException,ArrayIndexOfBoundException就是非检查型异常,通常是可以通过编码避免的逻辑错误。
- 编译期不检查,如果抛出了非检查型异常,那就是编码逻辑有问题,需要开发者解决。
三、异常处理5个关键字
异常处理过程:一般情况下是用try来执行一段程序,如果系统会抛出(throw\throws)一个异常对象,可以通过它的类型来捕获(catch)它,或通过总是执行代码块(finally)来处理。
需要注意:try-catch代码段会产生额外的性能开销,Java每实例化一个Exception,都会对当时的栈进行快照。