zoukankan      html  css  js  c++  java
  • Java中的异常详解

    一、异常定义

         阻止当前方法或作用域继续执行的问题,称为异常

    二、异常分析

         所有不正常类都继承Throwable类,这个类主要有两个子类Error类和Exception类。Error指系统错误,比如内存溢出或者虚拟机异常,Error出现程序就彻底崩溃了,Exception一般是编码、环境出现问题。Exception其中的一个子类是RuntimeException(非检查异常),能给引起RuntimeException异常的情况有很多,比如空指针异常、数组越界、数据类型转换错误、算数异常(12/0)、RuntimeException异常会有java虚拟机自动抛出自动捕获,一般是由代码逻辑问题引起的。下面有一个图大致的体现了各异常之间的关系:

              

         检查异常需要我们自己捕获并处理异常,在java中用try—catch以及try—catch—finally这样的语句块来处理异常。基本语法如下:

          

    三、如果try抛出异常,代码的执行变化

          首先抛出异常的方法会终止执行,然后程序的控制权将会被移交给catch块中的异常处理。比如下边的例子:如果我们手动输入age的时候,输入的不是整数就会被InputmisatchException捕获而执行cache语句块。

              

         

         如果try中会抛出很多种类型的异常,我们可以用多重catch块语法,如下:

             

    四、多重catch语句块的注意事项:

         1、顺序问题:一定要先小后大的顺序,也就是先子类后父类的顺序。这是因为程序抛出异常的时候,异常处理系统会就近寻找匹配的异常处理程序,而子类继承于父类,针对父类的异常处理程序对于子类也是适用的。其实如果顺序写错了,把Exception放在最前边,编译也不会通过的。

              

         在处理完异常之后还需要做一些善后工作,比如关闭连接、关闭已经打开的文件,这时就用到了finally语句块。语法如下:

              

    五、try块中调用的这些方法是如何抛出异常的

         这里边就用到了两个关键字,throw和throws。

         throws:throws是写在方法名和方法参数表之后在方法体之前,用throws修饰的方法向调用者表明该方法可能会抛出某种类型的异常,在这里是只抛出一种也可是多种,每个类型的异常用逗号隔开。具体的方法体里边可以调用一些会抛出异常的方法,或者可以先抛出一个异常,就用到了throw关键字。

              

         throw:throw写在方法体里边,表明具体抛出异常的动作,我们也可以不用throw进行处理,把异常直接抛给上层处理。

              

    六、java中的异常链

         text1()拋出"喝车别开酒"异常,text2()调用text1()捕获异常,并且包装成运行时异常,继续抛出,在main方法中调用text2()方法。

              

          运行结果如下:

              

  • 相关阅读:
    前端之HTML补充
    前端之HTML
    mysql 视图,触发器,存储
    mysql 函数 事务
    索引扩展
    mysql数据库索引相关
    mysql 存储过程查询语句
    mysql 单表查询
    mysql 多表连接查询
    js引入的几种简单写法
  • 原文地址:https://www.cnblogs.com/chentong/p/5395702.html
Copyright © 2011-2022 走看看