异常处理机制
Posted starzhai
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了异常处理机制相关的知识,希望对你有一定的参考价值。
面试注意点:
1.Exception=RuntimeException(运行时异常)+CheckedException(检查异常)
CheckedException常见有IO异常和SQL异常
RuntimeException=NullPointerException、ArrayStoreException(数据存储异常)、ClassCastException(类型转换异常)、InexOutOfBoundException(数组越界异常)、BufferOverflowException(缓冲区溢出异常)、ArithmeticException(算数异常)、等
2.异常不停的向上一层抛出直到遇见处理块,多线程由Thread.run()抛出,单线程由main()抛出.抛出之后相应线程或进程退出
3.(1)基类在上层,所以先捕获子类后捕获基类
(2)尽早抛出异常,能处理就处理不能再抛出,
4.try/catch/finally的组合:(1)try/catch(2)try/finally(3)try/catch..catch/finally
a.try,finally只能一个,catch可以多个。
b.先执行try有异常则执行catch(多个catch相当于if else if)最后执行finally。无异常时先try然后finally
c.jdk1.7允许用管道写多个catch: catch(IOException|Exception e){}
5.(1)Throwable:public class Throwable extends Object implements Serializable
(2)Exception:public class Exception extends Throwable
a.(1)是所有异常的超类,(2)是所有异常的父类
b.12都是公共类,因为1可以被序列化(Serializable)所以其子类Exception 也可以被序列化
6.捕获一个线程抛出的异常的方法:用UncaughtExceptionHandler(异常捕获处理方法)来捕获线程抛出的异常
.....
7.throw和throws的区别:
throws用在函数头,表示出现异常的可能性但不一定会发生异常。
throw用在函数体,显示的抛出一个异常,若被执行则一定抛出了该异常
throw用在函数体,显示的抛出一个异常,若被执行则一定抛出了该异常
例:class test{
public void f(int i) throws MyException{
if(i=1)throw new MyException();
}
}
序言
android异常剖析意义:
1、提前预见可能会报错的代码段;
2、提高解决问题的效率。
学习收获:
1、Android常见异常发生的场景;
2、如何快速定位问题、以及怎么分析、解决问题;
3、实际开发中,如何做好常见异常的防范。
第一章Android常见异常的分类
大致可以分为以下两类:
1、编译时错误(eg:ClassNotFoundException/layout中找不到ID等);安装过程报错
2、运行时(Runtime)错误。
(eg:数组越界/类型转换异常等)运行过程报差
第二章常见异常举例
1.编译期异常(例如找不到类):
(1)找到caused by冒以后的部分
(2)有代码出错的代码行数,可以点击定位查看
*运行期异常(以数组越界为例):定位查看,定位前一句通常也有错误提示
第三章 异常解决方案
第四章具体案例分析
1.空指针
NullPointerException:使用了一个没有被实例化的指针
2.越界
ArrayIndexOutofBoundsException:
3.权限不够
SecurityException:权限去AndroidManifest.xml里设置
第五章Android全局异常捕获处理
1. 全局错误
UncaughtExceptionHandler类有相应方法
public class CrashHandler implements Thread. UncaughtExceptionHandler{
private static CrashHandler mInstance;
private crashHandler(){}
//单例
public static crashHandler getInstance(){
if(mInstance==nul1){
synchronized(CrashHandler. class){
if(mInstance==null){
mInstance=new CrashHandler();
return mInstance;}
public void uncaughtException(Thread t,Throwable e){
//1,收集错误信息;
//2,保存错误信息;
//3,上传到服务器
}
以上是关于异常处理机制的主要内容,如果未能解决你的问题,请参考以下文章