一、空指针异常

private String str;

private void initView() {

int a = str.length();

Log.e("zpan","=========" + a);

}

Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'int java.lang.String.length()'

on a null object reference

at com.example.zpdemo.activity.ZpYaoActivity.initView(ZpYaoActivity.java:28)

报空指针异常肯定是“.”前面的某个变量为空。这个比较容易排查。

空指针是Crash最常见的一种也是最容易被忽略的一种,后台返回数据为空的场景,防不胜防,只要是有可能为空的数据,最好在使用之前做一次判空处理,以减少崩溃的概率;还有代码执行顺序的场景,还没赋值就拿去用,肯定会报空指针等等。

方案:做好防护工作,逻辑梳理清晰来减少崩溃的发生。

二、类型转换异常

String str = "";

int a = Integer.valueOf(str);

Caused by: java.lang.NumberFormatException: Invalid int: ""

at java.lang.Integer.invalidInt(Integer.java:138)

at java.lang.Integer.parseInt(Integer.java:358)

at java.lang.Integer.parseInt(Integer.java:334)

at java.lang.Integer.valueOf(Integer.java:525)

at com.example.zpdemo.activity.ZpYaoActivity.initView(ZpYaoActivity.java:26)

有时候我们是需要针对 API 传的数据进行类型转换,那我们就不能保证 API 传的数据不为空,如果忽略了这种场景,那等待我们的就是 Crash。

方案:针对类型转换写一个类型安全转换的函数,即返回数据为空的时候,返回默认值。

private void initView() {

String str = "";

int a = String2Int(str, 0);

Log.e("zpan","=========" + a);

}

private int String2Int(String str, int defaulValue) {

if (TextUtils.isEmpty(str)) {

return defaulValue;

}

try {

return Integer.valueOf(str);

} catch (Exception e) {

return defaulValue;

}

}

将该函数放在 Utils 类中,以便复用。同理,long、double、String等类型的转化,都可以这样防护,减少崩溃。

三、下标越界

private String str = "abc";

private void initView() {

String a = str.substring(3,6);

Log.e("zpan","=========" + a);

}

Caused by: java.lang.StringIndexOutOfBoundsException: length=3; regionStart=3; regionLength=3

at java.lang.String.startEndAndLength(String.java:298)

at java.lang.String.substring(String.java:1087)

at com.example.zpdemo.activity.ZpYaoActivity.initView(ZpYaoActivity.java:28)

取值超过本身的长度的时候,就会报下标越界异常。API传数据的时候,并且要对字符串做二次处理,这个时候就要考虑字符串取值是否会越界的场景。不仅是字符串,数组和集合同理,也要考虑这种场景。

方案:对可能会出现这种场景的数据,做数据防护。

android 常见的异常,Android 几个常见异常且容易被忽略的地方相关推荐

  1. Android面试必过——Android常见的问题

    Android常见的问题 标签(空格分隔): 移动开发 常见算法问题的 Java 实现 资料可见 算法介绍可见 算法是很多公司面试必须,国内 BAT 基本面试中都会有,尤以百度为盛. 常见设计模式的 ...

  2. Android开发——联系人中几种常见的mimetype、几张常见表的Uri

    2个常见的Uri "content://com.android.contacts/raw_contacts" "content://com.android.contact ...

  3. [Android Studio]掌握Android Studio的五种常见控件和五种常见布局

    目录 一.View和ViewGroup 二.Android的五种常见控件 2.1 文本控件 2.1.1 TextView 2.1.2 EditText 2.2 按钮控件 2.2.1 Button 2. ...

  4. Android M版本中gpio几种常见设定的pinctrl配置

    Android M版本中gpio几种常见设定的pinctrl配置 [DESCRIPTION] pinctrl的配置file是<project>.dts 备注:配置是以mt6735上gpio ...

  5. Android布局文件错误,android 布局文件常见错误

    1.'Missing contentDescription attribute on image' in XML 原因:缺少图片描述,在 ADT 16 开始会抛出这个警告,确保开发者为图片添加内容描述 ...

  6. android 特殊屏幕适配,Android屏幕适配(2)常见:第一种

    前言: Android屏幕适配(1)基础知识篇 Android屏幕适配(3)常见:第二种 Android屏幕适配(4)常见:第三种 Android屏幕适配(5)常见:归纳总结 常见的屏幕配置问题(一些 ...

  7. android 设置风格主题,Android Theme 常见主题风格详解

    本文为自己多年来在Android实战开发过程中总结归纳的一些常见问题,现在分享出来希望对初学者有所帮助. 目录 [1. 什么是Style,什么是Theme?] [2. 在定义Theme的时候@符号和? ...

  8. android问题总结报告,Android开发中常见的问题总结

    1.在cmd命令行中输入android list target出现android不是内部或外部命令 新建一个环境变量ANDROID_HOME=你的sdk所在目录 然后在path中加入%ANDROID_ ...

  9. Android 8.1 中Systemui中的常见修改(六)NavigationBar加载流程

    本文主要分为两个部分 一.NavigationBar的加载流程 二.Android P上如何去除NavigationBar 一 NavigationBar的加载流程 NavigationBar就是我们 ...

  10. Android测试最新框架,Android单元测试-常见的方案比较

    前言 本文将介绍在Android Studio中,android单元测试的介绍和实现.相关代码托管在github上的AndroidJunitDemo中,涉及到的用例代码收集于google官方提供的测试 ...

最新文章

  1. 【漫画】以后在有面试官问你AVL树,你就把这篇文章扔给他。
  2. WebGIS中地图恢复初始位置及状态
  3. 【ArcGIS 10.2新特性】Geodatabase 10.2 常见问题
  4. anaconda python命令_Anaconda常用命令
  5. Python的小括号( )、中括号[ ]和大括号{}分别代表什么?
  6. RS485串口光端机产品功能特点介绍
  7. 【MySQL5.7版本单节点大数据量迁移到PXC8.0版本集群全记】
  8. SAP License:SAP权限管理讲财务(二)-看懂财务报表
  9. Java 1.1.7 String API (!!!)
  10. C语言涉及数组的大作业,c语言大作业_基于数组的学生信息管理系统.doc
  11. 有没有换发型的软件?一分钟智能更换发型
  12. 模电——二级管的限幅与稳压
  13. 卸载office2007不干净问题
  14. 2012年8月22日
  15. 新注册第一帖----------------------乱码新手自学.net 之Linq 入门篇
  16. 这也能卖?拉美电商平台Mercado Libre上的10种奇葩产品
  17. RuntimeError: mat1 and mat2 shapes cannot be multiplied (192x64 and 4x3)
  18. android 自动发彩信,Android编程实现定时发短信功能示例
  19. 小冲哥c语言视频自学网,C语言二级教学视屏课件_51自学网_小冲哥.doc
  20. 服务器程序运行的相关操作

热门文章

  1. 通过angularjs的directive以及service来实现的列表页加载排序分页
  2. android守护进程
  3. Unity3d 调用C++写的DLL
  4. Mysql 导出导入
  5. 在lua中优雅的操作日期和时间
  6. 《物流与供应链管理》课程论文
  7. jquery学习笔记之选择器
  8. 孙鑫VC学习笔记:第十一讲 (五) 如何使窗口具有滚动条
  9. 拓端tecdat|R语言贝叶斯MCMC:GLM逻辑回归、Rstan线性回归、Metropolis Hastings与Gibbs采样算法实例
  10. 权威cpu测试软件,权威CPU测试软件更新 CPU-Z v1.40.5