码迷,mamicode.com
首页 > 其他好文 > 详细

异常处理机制

时间:2018-10-29 22:10:50      阅读:254      评论:0      收藏:0      [点我收藏+]

标签:意义   服务器   保存   size   场景   一个   不能   全局   转换   

技术分享图片

 

 
面试注意点:
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用在函数体,显示的抛出一个异常,若被执行则一定抛出了该异常
例: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,上传到服务器
}

异常处理机制

标签:意义   服务器   保存   size   场景   一个   不能   全局   转换   

原文地址:https://www.cnblogs.com/StarZhai/p/9873500.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!