android java中遇到的异常及报错如何解决?
来源:互联网 发布:python开发过哪些软件? 编辑:程序博客网 时间:2024/06/03 17:03
常遇到的异常、如何解决
异常的继承结构:
- 基类为Throwable
- Error和Exception继承Throwable
- RuntimeException和IOException等继承Exception
- 具体的RuntimeException继承RuntimeException
- Error和RuntimeException及其子类称为未检查异常(unchecked),其它异常称为已检查异常(checked)。
异常类型
- SQLException:操作数据库异常类。
- 问题:当Java应用程序与数据库进行沟通时如果产生了错误,就会触发这个类。同时会将数据库的错误信息通过这个类显示给用户。当用户插入数据的时候,如果这个字段的值跟现有的纪录重复了,违反了数据库的唯一性约束,此时数据库就会跑出一个异常信息。这个信息一般用户可能看不到,因为其发生在数据库层面的。此时这个操作数据库异常类就会捕捉到数据库的这个异常信息,并将这个异常信息传递到前台。如此的话,前台用户就可以根据这个异常信息来分析发生错误的原因。
- 解决方案:检查插入的数据是否重复。
- ClassCastException:数据类型转换异常。
- 问题:在Java应用程序中,有时候需要对数据类型进行转换。这个转换包括显示的转换与隐式的转换。不过无论怎么转换,都必须要符合一个前提的条件,即数据类型的兼容性。在数据类型进行转换之前,就保证数据类型的兼容性。如此的话,就不容易造成数据类型的转换异常。如在只允许数值类型的字段中,可以设置不允许用户输入数值以外的字符。
- 解决方案:注意相应的组件在初始化的时候,是否相对应。
- NumberFormatException:字符串转换为数字类型时抛出的异常。
- 问题:在数据类型转换过程中,如果是字符型转换为数字型过程中出现的问题,对于这个异常在Java程序中采用了一个独立的异常,即NumberFormatException.如现在讲字符型的数据“123456”转换为数值型数据时,是允许的。但是如果字符型数据中包含了非数字型的字符,如123#56,此时转换为数值型时就会出现异常。系统就会捕捉到这个异常,并进行处理。
- 解决方案:检查数据是否正确。
- java.lang.NullPointerException
- 如果使用第三包的jar包,可能jar包中有错误
- 没有实例化组件
-没有把Adapter和值绑定;- 当页面中某个组件赋值为null时activity会出现错误,程序崩溃后其他页面的数据就会被重新初始化
- 用Intent传值时,获取的key不存在
- 没有赋初始值
- java.lang.ClassNotFoundException
- 异常的解释是”指定的类不存在”。
- java.lang.ArithmeticException
- 这个异常的解释是”数学运算异常”,比如程序中出现了除以零这样的运算就会出这样的异常。
- java.lang.ArrayIndexOutOfBoundsException
- 异常的解释是”数组下标越界”,现在程序中大多都有对数组的操作,因此在调用数组的时候一定要认真检查,看自己调用的下标是不是超出了数组的范围,一般来说,显示(即直接用常数当下标)调用不太容易出这样的错,但隐式(即用变量表示下标)调用就经常出错了,还有一种情况,是程序中定义的数组的长度是通过某些特定方法决定的,不是事先声明的,这个时候,最好先查看一下数组的length,以免出现这个异常。
- java.lang.IllegalArgumentException
- 这个异常的解释是”方法的参数错误”,比如
g.setColor(int red,int green,int blue);
这个方法中的三个值,如果有超过255的也会出现这个异常,因此一旦发现这个异常,我们要做的,就是赶紧去检查一下方法调用中的参数传递是不是出现了错误。- java.lang.IllegalAccessException
- 这个异常的解释是”没有访问权限”,当应用程序要调用一个类,但当前的方法即没有对该类的访问权限便会出现这个异常。对程序中用了Package的情况下要注意这个异常
- 安全异常:产生的原因是由于当前的设备不支持当前程序,这个是由于机型产生的问题,我们应该换一个设备进行测试,检测当前程序存在什么样的异常;另一种原因是获取激活的网络信息实体类,需要添加权限,否则会出现此异常
解决办法:在配置文件中,添加android_permission_Access_NetWork_State
的权限- RejectExcuteException
- 一个异步任务只能执行一次,否则会报异常
一个线程最多能执行5个线程,超出则等待,否则会报拒绝执行的异常
解决办法:使用子线程+handler来代替AsyncTask,或者一个线程中少添加几个异步操作。- Out of memory:内存溢出是存放的数据过多导致内存不足的溢出事件
- Memory leak:内存泄露是本应该释放的资源没有充分得到释放,就继续添加数据导致内存泄露事件;
Java应用程序中常见的异常类还有很多。
如未找到相应类异常、不允许访问某些类异常、文件已经结束异常、文件未找到异常、字段未找到异常等等。一般系统开发人员都可以根据这个异常名来判断当前异常的类型。
- ArithmeticException(除数为0的异常)
- BufferOverflowException(缓冲区上溢异常)
- BufferUnderflowException(缓冲区下溢异常)
- IndexOutOfBoundsException(出界异常)
- NullPointerException(空指针异常)
- EmptyStackException(空栈异常)
- IllegalArgumentException(不合法的参数异常)
- NegativeArraySizeException(创建一个大小为负数的数组错误异常)
- NoSuchElementException(线程中访问越界)
- SecurityException(安全异常)
- SystemException(应用异常)
阅读全文
0 0
- android java中遇到的异常及报错如何解决?
- 编译中遇到的异常报错解决
- android,java常遇到的异常以及如何解决?
- Android开发中遇到的报错及解决方法
- Java中遇到的报错信息为:空指针异常的情况
- 解决Android中解析xml时遇到的MalformedURLException异常
- android开发中遇到的异常及解决方法
- java android客户端SSL通信 遇到的几个报错及处理
- eclipse中遇到的异常解决方式
- android 开发中遇到的问题及解决方式
- Android遇到的问题及解决(持续更新中)
- android studio中遇到的错误及解决
- java转web项目中遇到的问题及解决
- android中遇到 ANR问题及解决
- Android 异常报错与解决
- MyEclipse中java web项目报错及解决
- Android中如何解决Thread第二次Thread.start()报错
- 如何解决Eclipse中Java工程间循环引用而报错的问题
- Android Glide数据更新及内存缓存、硬盘缓存清理
- JAVA提高篇(24)--CharArrayReader、CharArrayWriter简介
- LeetCodeday01
- 简单易用的数据库调用类(增、删、查、改)
- php curl编码类型设置、文件上传与接收数据
- android java中遇到的异常及报错如何解决?
- HihoCoder 1317 题解
- 通信协议——uart
- java jdk配置问题
- JAVA提高篇(25)--PrintWriter简介
- 349. Intersection of Two Arrays
- 【牛客】 操作系统 处理机的所有指令可以在()中执行。
- Java的三大框架
- Linux下解压命令大全