Android 性能优化(三)认识错误Error和异常Exception及栈轨迹StackTrace

目录

一、定义

throwable

exception

error

二、异常类型

三、异常处理5个关键字 

try

catch

throw

throws

finally

四、模拟面试

面试题1:try语句可以嵌套吗?

面试题2:下面代码有问题吗?

面试题3:try块中加退出语句return会怎样?

五、异常的栈轨迹(Stack Trace)

1、printStackTrace()

2、getStackTrace()方法

 3、fillInStackTrace()


 前言

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,都会对当时的栈进行快照。

try

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

艾阳Blog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值