码迷,mamicode.com
首页 > 编程语言 > 详细

那些年,我们不懂的却又不得不提的 JAVA异常和异常处理!

时间:2015-10-24 00:11:02      阅读:192      评论:0      收藏:0      [点我收藏+]

标签:

---恢复内容开始---

    首先,我是个小小的菜鸟,最近突然突发奇想,想研究一下java的异常和异常的处理,稍有些理解,老鸟们莫要嘲笑。。。

 

  既然要讲异常和异常的处理,我们就要先了解异常,那么,什么是异常呢?

      简单的说,就是在一个程序运行的时候,发生的不可知的错误时而停止运行的时候,我管它叫做异常。

可以说异常时时刻刻陪在我们身边,从简单的代码环节,到生活上,都有可能发生异常。举个比例,我们去爬山的时候

要坐电缆,可是不巧,电缆没电了,怎么办? 一般情况我们有两种解决方法,一个是爬上去,一个是呆在原地。

现在在从这个例子来分析:

人乘坐电缆来到山上,这个可以看成是在运行时候的代码。

电缆没电了,人呆在原地,这个就可以看成是异常。

电缆没电了,我们爬上去,这个就可以说是异常处理。

   废话这么多,就是想让比我还要小的菜鸟更容易的理解异常,那好我们直接来用代码来来看看什么事异常。

 

出错的代码

技术分享

运行后显示的错误信息

技术分享

这一段代码运行的时候会出现错误,而编译时不会出错,这就是异常!(比较专业,没有生活小案列容易懂  >*-*<)

  以上讲的就是异常,但是异常是怎么在控制台中显示出来的呢?  接下来我就要给大家介绍一下异常的架构和分支了!

                              技术分享

  其中,Throwable是所有异常的超类,他继承与Object类。因为所有类都继承与Object类

  而Throwable下游两个分支Error和Exception类,

  其中Error表示仅靠程序本身无法恢复的严重错误,如内存溢出动态链接失败、虚拟机错误。

  而Exception是由java应用程序抛出和处理的非严重错误。

 

  而我们经常用到的异常都有如下几种

  Exception:顶级异常;

  ArithmeticException:算数错误情形,比如说用0作为除数。

  ArrayIndexOutOfBoundsException:数组下标越界。

  NullPointerException:尝试访问null对象成员。

  ClassNotFoundException:不能加载所需类。

  InputMismatchException:欲得到的数据类型与实际输入的类型不匹配。

  IllegalArgumentException:方法接收到非法参数。

  ClassCastException:对象强制类型转换出错。

  NumberFormatException:数字格式转换异常,如把“abc”转换成数字。

 

  异常的介绍就先到这里,我们既然知道了异常,就应该知道怎么去捕获异常,

而我们捕获异常时,就需要用try-catch-finally语句了。

  先讲一下他的语法:

  try{

    //代码块

  }catch(Exception e){

    //代码块

  }finally{

    //代码块

  }

  他的执行过程就是先执行try块里的内容,当try里的内容出现错误的时候,走catch块,但是finally块永远都会被执行,

除非你不写。

  他的执行流程说完之后,咱们在说说这三个模块的组合

      1.          2.

  try{         try{

  }catch{       }finally{

  }           }

   到最后面的时候给大家出一个异常捕获的面试题。

  

  异常捕获就先讲到这里,下面我们来说说异常的两个关键字,throws和throw。

  throw是抛出异常,而throws是声明异常的,如图:

  技术分享

当你抛出异常时如果没有使用try-catch语句进行异常捕获,就必须要声明出去,表示谁要调用我这个方法谁就要进行异常捕获。

 

 

 

接下来面试题出来了:

技术分享

 

有心的人可以想想看这道题的结果 看看返回的是几,要用大脑哦。答案在最下面!

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

答案是2,因为在try块中的return i的值是被虚拟机偷偷的在虚拟内存开辟了一块空间,而这个空间中存储的就是第一次return的值。

技术分享

答对的和没答对的记得留言哦。。。。。其实我是一只小菜鸟!

}

那些年,我们不懂的却又不得不提的 JAVA异常和异常处理!

标签:

原文地址:http://www.cnblogs.com/zhuangbiing/p/4905984.html

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