一、异常定义

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

二、异常分析

     所有不正常类都继承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()方法。

运行结果如下:

Java中的异常详解的更多相关文章

  1. java中的注解详解和自定义注解

    一.java中的注解详解 1.什么是注解 用一个词就可以描述注解,那就是元数据,即一种描述数据的数据.所以,可以说注解就是源代码的元数据.比如,下面这段代码: @Override public Str ...

  2. Java中dimension类详解

    Java中dimension类详解 https://blog.csdn.net/hrw1234567890/article/details/81217788

  3. [转载]java中import作用详解

    [转载]java中import作用详解 来源: https://blog.csdn.net/qq_25665807/article/details/74747868 这篇博客讲的真的很清楚,这个作者很 ...

  4. Java中日志组件详解

    avalon-logkit Java中日志组件详解 lanhy 发布于 2020-9-1 11:35 224浏览 0收藏 作为开发人员,我相信您对日志记录工具并不陌生. Java还具有功能强大且功能强 ...

  5. java基础(十五)----- Java 最全异常详解 ——Java高级开发必须懂的

    本文将详解java中的异常和异常处理机制 异常简介 什么是异常? 程序运行时,发生的不被期望的事件,它阻止了程序按照程序员的预期正常执行,这就是异常. Java异常的分类和类结构图 1.Java中的所 ...

  6. Java面向对象之异常详解

    目录 Java面向对象之异常[一] Java面向对象之异常[二] 捕获异常的规则 访问异常信息 异常对方法重写的影响 finally详解 Java面向对象之异常[一] Java面向对象之异常[二] 往 ...

  7. JAVA中Object类方法详解

    一.引言 Object是java所有类的基类,是整个类继承结构的顶端,也是最抽象的一个类.大家天天都在使用toString().equals().hashCode().waite().notify() ...

  8. Java中反射机制详解

    序言 在学习java基础时,由于学的不扎实,讲的实用性不强,就觉得没用,很多重要的知识就那样一笔带过了,像这个马上要讲的反射机制一样,当时学的时候就忽略了,到后来学习的知识中,很多东西动不动就用反射, ...

  9. Java中的多线程详解

    如果对什么是线程.什么是进程仍存有疑惑,请先Google之,因为这两个概念不在本文的范围之内. 用多线程只有一个目的,那就是更好的利用cpu的资源,因为所有的多线程代码都可以用单线程来实现.说这个话其 ...

随机推荐

  1. ACM—循环小数转变成分数知识点_C++实现

    在小学的时候,我们的学生都能把“整数表示成分母是1的分数”,而且大多数学生也都能把有限小数和循环小数表示成分数的形式.这样,整数.分数.有限小数.循环小数都属于有理数.教科书中说“整数和分数统称有理数 ...

  2. poj 1077 Eight(双向bfs)

    题目链接:http://poj.org/problem?id=1077 思路分析:题目要求在找出最短的移动路径,使得从给定的状态到达最终状态. <1>搜索算法选择:由于需要找出最短的移动路 ...

  3. Hierarchical Storage structure

    1.hierarchical storage structure      This notion of inserting a smaller, faster storage device (e.g ...

  4. java程序获得SqlServer数据表的表结构

    /**   * 取得一张表的结构信息   * 使用DatabaseMetaData与ResultSetMetaData结合的方式获取全部属性   * @param conn   数据连接   * @p ...

  5. STM32菜鸟成长记录---RS485通讯协议的应用

    写作原因:近来蛋闲?非也  !  昨天一同事合作的项目代码出现的bug-----他的上位机每200ms给我发送命令向我这边下位机读取一些数据,在此过程会按下按键做一些另外操作并给他返回数据:(通信是通 ...

  6. 最简单的javascript 竖向菜单

    <html xmlns="http://www.w3.org/1999/xhtml"><head runat="server">    ...

  7. MVC中AuthorizeAttribute用法并实现权限控制

    1.创建一个类(用来检查用户是否登录和用户权限)代码如下: public class AuthorizeFilterAttribute: AuthorizeAttribute    { //Autho ...

  8. Java配置

    JAVA_HOME -- JDK安装的路径 PATH -- 加入:;%JAVA_HOME%\bin; CLASSPATH -- 加入:;%JAVA_HOME%\lib\dt.jar;%JAVA_HOM ...

  9. 「Foundation」字符串

    一.Foundation框架中一些常用的类 字符串型: NSString:不可变字符串 NSMutableString:可变字符串 集合型: 1)NSArray:OC不可变数组  NSMutableA ...

  10. [Swust OJ 412]--医院设置(floyd算法)

    题目链接:http://acm.swust.edu.cn/problem/412/ Time limit(ms): 1000 Memory limit(kb): 65535   Description ...