Android菜鸟饭团#Java中文学习#第六课 活动笔记 一、基础知识 1.抛出异常:Java程序的执行过程中如出现异常事件,可以生成一个异常类对象,该异常对象封装了异常事件的信息并将被提交给java运行时系统,这个过程叫抛出(Throw)异常。 2.捕获异常:当Java运行时系统接收到异常对象时,会寻找能处理这一异常的代码并把当前异常对象交给其处理,这一过程称为捕获(catch)异常。 3. 异常处理: try{ 可能出现错误的语句; }catch(错误类型 对象名){ System.out.println(“错误”); 对象名.printStackTrace(); } 或 try{ 程序代码 }catch(异常类型1 异常的变量名1){ 程序代码 }catch(异常类型2 异常的变量名2){ 程序代码 }finally{ 程序代码 } 4.异常的分类 Java异常类的结构: Throwable |____Error |____Exception |____RuntimeException |____其它Exception Error:Java运行系统中的内部错误以及资源耗尽的情况。 Exception:RuntimeException及其子类(编程导致的异常)、其它Exception类 二、大家的问题 1.问题?有错误不应该改正吗?为什么要捕获? 方法出现异常,为什么不改正,要抛出来?异常主要用来处理一些非正常的情况,比如 正连着数据库,可是数据库突然挂了。有些异常是预知不到的,就像连接数据库,谁敢保证100%能够连接上去,预知不到的就要捕抓他,不让程序因为异常而中断,是一种异常保护机制。 异常不等于bug,异常处理和debug是两回事,另外一个程序不是一个人做的,一个程序员有可能并不知道当他遇到某个异常时,上层invoker要如何处理,所以他要做的只是通知上层他遇到了异常,由上层决定如何处理 异常通常用于扑捉意外的错误,也就是编码所不能控制的错误,比如说数据库出问题连接不上了,文件找不了。 2. 通过抛出异常,可以把同类问题汇拢到一起统一解决,这样代码就更精简了。 3. 通过看异常栈,方便层层跟踪错误。 4. 提高代码的可读性,让我们把异常处理代码和普通代码分开。 5. 异常见名知意,看信息很容易知道产生异常的原因。 2.怎么理解这个抛? 如果你知道你写的某个函数有可能抛出异常,而你又不想在这个函数中对异常进行处理,只是想把它抛出去让调用这个函数的上级调用函数进行处理,那么有两种方式可供选择: 第一种方式:直接在函数头中throws SomeException,函数体中不需要try/catch。比如将最开始的例子中的testEx2改为下面的方式,那么testEx1就能捕捉到testEx2抛出的异常了。 boolean testEx2() throws Exception{ boolean ret = true; int b=12; int c; for (int i=2;i>=-2;i--){ c=b/i; System.out.println("i="+i); } return true; } 第二种方式:使用try/catch,在catch中进行一定的处理之后(如果有必要的话)抛出某种异常。例如上面的testEx2改为下面的方式,testEx1也能捕获到它抛出的异常: boolean testEx2() throws Exception{ boolean ret = true; try{ int b=12; int c; for (int i=2;i>=-2;i--){ c=b/i; System.out.println("i="+i); } return true; }catch (Exception e){ System.out.println("testEx2, catch exception"); Throw e; } } 第三种方法:使用try/catch/finally,在catch中进行一定的处理之后(如果有必要的话)抛出某种异常。例如上面的testEx2改为下面的方式,testEx1也能捕获到它抛出的异常: boolean testEx2() throws Exception{ boolean ret = true; try{ int b=12; int c; for (int i=2;i>=-2;i--){ c=b/i; System.out.println("i="+i); throw new Exception("aaa"); } return true; }catch (java.lang.ArithmeticException e){ System.out.println("testEx2, catch exception"
【书记员:汪立阳】 每一个技术小白都有一个成为大神的梦想,现在Android菜鸟饭团就给你这个成就梦想的机会。我们提供最新的Android技术教学,只要你又耐心和毅力就一定会在这里有所收获。 Android菜鸟饭团由南阳GDG组织发起,秉承着开放、分享、创新的原则,希望通过GDG社区的力量能够给更多的想要学习Android开发技术的小白们创造一个学习,交流,分享的环境。同往常的GDG活动一样,我们依然是任性的一个子都不要,并且还在周六的分享中提供盒饭和不定期的惊喜小礼物呦~所以快来加入我们吧,为你的大神梦想迈出第一步。
|