黑马入学测试—基础—异常机制

原创 2015年11月21日 00:20:27
异常机制已经成为判断一门编程语言是否成熟的标准,异常机制可以使程序中异常处理代码和正常业务代码分离,保证程序代码更加优雅,并提高程序健壮性。

          Java异常机制主要依赖于try、catch、finally、throw、throws五个关键字。

          1.try:它里面放置可能引发异常的代码

          2.catch:后面对应异常类型和一个代码块,用于表明该catch块用于处理这种类型的代码块,可以有多个catch块。

          3.finally:主要用于回收在try块里打开的物力资源(如数据库连接、网络连接和磁盘文件),异常机制总是保证finally块总是被执行。只有finally块,执行完成之后,才会回来执行try或者catch块中的return或者throw语句,如果finally中使用了return或者   throw等终止方法的语句,则就不会跳回执行,直接停止。

          4.throw:用于抛出一个实际的异常,可以单独作为语句使用,抛出一个具体的异常对象。

          5.throws:用在方法签名中,用于声明该方法可能抛出的异常。



        Java的异常分为两种,checked异常(编译时异常)和Runtime异常(运行时异常)

 1.       java认为checked异常都是可以再编译阶段被处理的异常,所以它强制程序处理所有的checked异常,而Runtime异常无须处理,java程序必须显式处理checked异常,如果程序没有处理,则在编译时会发生错误,无法通过编译。

 2.       checked异常体现了java设计哲学:没有完善处理的代码根本不会被执行,体现了java的严谨性,

      对于构造大型、健壮、可维护的应用系统而言,错误处理是整个应用需要考虑的重要方面。Java异常处理机制,在程序运行出现意外时,系统会生成一个Exception对象,来通知程序,从而实现将“业务功能实现代码”和“错误处理代码”分离,提供更好的可读性。

      如果执行try块里的业务逻辑代码时出现异常,系统会自动生成一个异常对象,该异常对象被提交给运行环境,这个过程被称为抛出(throw)异常。Java环境收到异常对象时,会寻找合适的catch块,如果找不到,java运行环境就会终止,java程序将退出。

      不同的catch块,视为了针对不同的异常类,提供不同的处理方法。



 对于错误处理机制,主要有如下的两个缺点:

 1.无法穷举所有异常情况:因为人类的知识是有限的,异常情况总比可以考虑到的情况多,总有漏网之鱼

 2.错误处理代码和业务实现代码混杂严重影响程序的可读性,会增加程序维护的难度。

 1.使用try...catch捕获异常

 java提出了一种假设,如果程序可以顺利完成,那么一切正常,把系统的业务实现代码放在try块中定义,所有的异常处理逻辑放在catch块中进行处理。

 即:try{

 //业务实现代码

 ...

 }

 catch(Exception e){

 输入不合法

 }

 上面的格式中try块和catch块后的{...}都是不可以省略的!

 执行步骤:

 1.如果执行try块中的业务逻辑代码时出现异常,系统自动生成一个异常对象,该异常对象被提交给java运行环境,这个过程称为抛出(throw)异常。

 2.当java运行环境收到异常对象时,会寻找能处理该异常对象的catch块,如果找到合适的cathc块并把该异常对象交给catch块处理,那这个过程称为捕获(catch)异常;如果java运行时环境找不到捕获异常的catch块,则运行时环境终止,jav程序也将退出。

 注意1:不管程序代码块是否处于try块中,甚至包括catch块中代码,只要执行该代码时出现了异常,系统都会自动生成一个异常对象,如果程序没有为这段代码定义任何catch块,java运行环境肯定找不到处理该异常的catch块,程序肯定在此退出。

 注意2:try块后可以有多个catch块,try块后使用多个catch块是为了针对不同异常类提供的不同的异常处理方式。当系统发生不同意外情况时,系统会生成不同的异常对象,java运行时就会根据该异常对象所属的异常类来决定使用哪个catch块来处理该异常。

 注意3:通常情况下,如果try块被执行一次,则try块后只有一个catch块会被执行,绝不可能有多个catch块被执行,除非在循环中使用类continue开始下一次循环,下一次循环又重新运行了try块,这才可能导致多个catch块被执行。

 注意4:进行异常捕获时,一定要记住先捕获小的异常,再捕获大的异常。

 



 

黑马入学Java知识—精华总结(下)

  • 2014年04月28日 19:49
  • 434KB
  • 下载

黑马程序员—Java面向对象(异常处理机制、package包、import导入包、jar包)

------- android培训、java培训、期待与您交流! ----------

黑马程序员—java基础_异常多态练习

------- android培训、java培训、期待与您交流! ---------- 1.有一个圆形和长方形,都可以获取面积,对于面积如果出现非法值,视为获取面积出现问题,通过异常 来表示 ...

黑马程序员—java基础之异常总结

什么是异常? 是对问题的描述,将问题进行对象的封装。 (一)异常体系:     Throwable         |-----Error         |-----Exception ...

黑马程序员—Java基础---异常体系学习总结

异常:就是不正常。程序在运行时出现的不正常情况。其实就是程序中出现的问题。这个问题按照面向对象思想进行描述,并封装成了对象。因为问题的产生有产生的原因、有问题的名称、有问题的描述等多个属性信息存在。当...

黑马程序员—JAVA基础之异常

异 常 异常:程序在运行时出现的不正常情况。即程序中出现的问题。这个问题按照面向对象思想进行描述,并封装成了对象。   java.lang.Throwable:类 ,Throwable字面意思“...
  • yxqcz
  • yxqcz
  • 2014年04月25日 20:30
  • 337

黑马程序员————Java基础日常笔记---对异常的理解

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- 1,异常的由来: 一切事物皆对象, 问题也是现实生活中一个具体的事物,就像疾病,因此也可以通过j...

黑马入学基础测试

  • 2014年10月30日 19:05
  • 19KB
  • 下载

黑马程序员—【Java基础篇】之多态、内部类、异常及包

------- android培训、java培训、期待与您交流! ---------     大家好,这篇我们介绍和学习多态、内部类、异常和包的4大块知识点。 一、多态 1、定义     某一类...
  • WL8721
  • WL8721
  • 2015年04月22日 16:59
  • 498

黑马程序员————Java基础部分之多态、内部类、异常

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- 一、多态 定义:某一种事物的多种存在形态。 例如:动物中猫和狗,猫和狗都属于动物,我们既可以叫...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:黑马入学测试—基础—异常机制
举报原因:
原因补充:

(最多只允许输入30个字)