Android开发过程中异常的处理方法

对于运行时异常,java编译器不要求强制进行异常处理或声明,由程序员自行决定;

非运行时异常,顾名思义就是在程序运行前的异常,也就是编译异常,Java编译器会要求我们强制进行异常处理,比如FileNotFoundException、IOExeption、SQLException、JSONException之类的异常。

比如读文件的方法,可能存在文件不存在的情况,那么Java编译器会要求我们强制捕获并处理FileNotFoundException这类的异常。

抛出异常

==============================================================

throw


  1. 只能用在方法体内;

  2. 抛出的是一个异常实例对象;

private void throwsTest(int a, int b) throws Exception1, Exception3 {

try {

} catch (Exception1 e) {

throw e;

} catch (Exception2 e) {

System.out.println(“出错了!”);

}

if (a != b) {

throw new

} Exception3(“自定义异常”);

}

Exception1:方法内部捕获后再抛出,交由该方法的调用者处理;

Exception2:方法内部捕获后处理完成,不再向上抛出;

Exception3:方法内部自行抛出异常,交由该方法的调用者处理;

throws


  1. 跟在方法名后面;

  2. 可以跟多个异常类名;

  3. 由该方法调用者处理该抛出的异常;

例子见上面throw代码。

需要说明一点的是该方法调用者如何处理该抛出的异常:

private void main() {

try {

throwsTest();

} catch (Exception e) {

e.printStackTrace();

}

}

可以看到,throwsTest方法的调用者main方法需要捕获throwsTest方法可能抛出的异常。

捕获异常


try catch是最常用的异常捕获手段:

try{

return JSON.parseObject(json);

}

catch (Exception e){

LogUtil.e(TAG, "toObject: " + e.getMessage());

} finally {

}

有一个地方需要注意的是,try中如果有return语句,那么它和finally直接的关系是怎么样的呢?

我们通过一个例子看下:

System.out.println(test());

public static int test() {

int x = 1;

try {

x++;

return x;

} finally {

++x;

System.out.println(x);

}

输出结果是:3,2

也就是finally会先执行,但是try中的return会先将变量x的值保存起来,然后再执行finally中的语句,最后将保存的值返回。

Android全局异常的捕获

========================================================================

Android提供了UncaughtExceptionHandler接口,我们可以新建一个实现了该接口的类,然后通过setDefaultUncaughtExceptionHandler方法注册这个接口,这样就可以捕获异常了。

public class CrashHandler implements Thread.UncaughtExceptionHandler {

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip204888 (备注Android)
img

总结:

各行各样都会淘汰一些能力差的,不仅仅是IT这个行业,所以,不要被程序猿是吃青春饭等等这类话题所吓倒,也不要觉得,找到一份工作,就享受安逸的生活,你在安逸的同时,别人正在奋力的向前跑,这样与别人的差距也就会越来越遥远,加油,希望,我们每一个人,成为更好的自己。

  • BAT大厂面试题、独家面试工具包,

  • 资料包括 数据结构、Kotlin、计算机网络、Framework源码、数据结构与算法、小程序、NDK、Flutter

被程序猿是吃青春饭等等这类话题所吓倒,也不要觉得,找到一份工作,就享受安逸的生活,你在安逸的同时,别人正在奋力的向前跑,这样与别人的差距也就会越来越遥远,加油,希望,我们每一个人,成为更好的自己。

  • BAT大厂面试题、独家面试工具包,

  • 资料包括 数据结构、Kotlin、计算机网络、Framework源码、数据结构与算法、小程序、NDK、Flutter
    [外链图片转存中…(img-fUVjoU0u-1711921210607)]

本文已被CODING开源项目:《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》收录

  • 9
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值