本站已关停,现有内容仅作科研等非赢利用途使用。特此声明。
查看: 936|回复: 0
打印 上一主题 下一主题

Android菜鸟饭团#Java中文学习#第六课 活动笔记

[复制链接]
跳转到指定楼层
1#
发表于 2015-5-2 12:57:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
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活动一样,我们依然是任性的一个子都不要,并且还在周六的分享中提供盒饭和不定期的惊喜小礼物呦~所以快来加入我们吧,为你的大神梦想迈出第一步。
把你的个人信息和申请理由快快发送到android@chuang1.net,前来加入我们吧



ChinaGDG.com
回复

使用道具 举报

*滑动验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表